]> git.openfabrics.org - ~shefty/librdmacm.git/commitdiff
refresh
authorSean Hefty <sean.hefty@intel.com>
Tue, 17 Jul 2012 19:34:22 +0000 (12:34 -0700)
committerSean Hefty <sean.hefty@intel.com>
Tue, 17 Jul 2012 19:34:22 +0000 (12:34 -0700)
meta
patches/fork
patches/refresh-temp [deleted file]

diff --git a/meta b/meta
index 073ec6a27a3857aaf502b96815b779390646f9f4..33860432f052b05885082f833022b7ec2d29e644 100644 (file)
--- a/meta
+++ b/meta
@@ -1,10 +1,9 @@
 Version: 1
-Previous: 522ddb4fa21524c0f00148e1312e808d29de7f86
-Head: aaef2b3382a3bb7a45d12dfcf61dbe5f8114be6f
+Previous: 1250945bdad5b28b8152a68d2e8c30bf10001f2d
+Head: c41b63504fb961b432e3a09b0e9c99480ddf6a1a
 Applied:
   transpose: 84e0beee0d2d3c217cd9703b9e438d25856cacb6
-  fork: b131326fd7cad28cd3b9a3d09c29c9476d7fddb0
-  refresh-temp: aaef2b3382a3bb7a45d12dfcf61dbe5f8114be6f
+  fork: c41b63504fb961b432e3a09b0e9c99480ddf6a1a
 Unapplied:
   waitall-buggy: c49c6b56c55385774065f5aa2704078e6ae0ceb8
   rs-1sge: 8ec392829399dec7ed5c608b8697a482e5faa2de
index 564e103ad34b0830dd2a68fdfa1e72a384a36d0c..89f4e82429ac2724de649f14bc524ec6f5eaa89d 100644 (file)
@@ -1,5 +1,5 @@
 Bottom: c0306f4628b14e75db3da212b4a99875f49be65f
-Top:    3ef5d9a598c00e66ce2beafac99c914e0942c3c3
+Top:    89b109b9172f2fd26f7feaca314718e1127b4e64
 Author: Sean Hefty <sean.hefty@intel.com>
 Date:   2012-07-13 15:25:53 -0700
 
@@ -14,7 +14,7 @@ Signed-off-by: Sean Hefty <sean.hefty@intel.com>
 ---
 
 diff --git a/src/preload.c b/src/preload.c
-index d2058e2..5860a4c 100644
+index d2058e2..1d76df9 100644
 --- a/src/preload.c
 +++ b/src/preload.c
 @@ -46,6 +46,8 @@
@@ -137,7 +137,7 @@ index d2058e2..5860a4c 100644
                sin = (struct sockaddr_in *) addr;
                if (ntohs(sin->sin_port) > 1024) {
                        ret = rconnect(fd, addr, addrlen);
-@@ -754,3 +803,57 @@ int fcntl(int socket, int cmd, ... /* arg */)
+@@ -754,3 +803,85 @@ int fcntl(int socket, int cmd, ... /* arg */)
        va_end(args);
        return ret;
  }
@@ -156,40 +156,68 @@ index d2058e2..5860a4c 100644
 +pid_t fork(void)
 +{
 +      struct sockaddr_storage sa;
++      struct sockaddr_in6 sin6;
 +      pid_t pid;
 +      sem_t *sem;
-+      int fd, lfd, newfd, ret, len, param;
++      int lfd, sfd, dfd, ret, len, param;
 +      uint32_t msg;
 +
 +      init_preload();
 +      pid = real.fork();
 +      if (pid || !fork_support || (last_accept < 0) ||
-+          (fd_get(last_accept, &fd) != fd_fork))
++          (fd_get(last_accept, &sfd) != fd_fork))
 +              goto out;
 +
++      len = sizeof sa;
++      ret = real.getsockname(sfd, &sa, &len);
++      if (ret)
++              goto out;
++      sin6.sin6_family = sa.ss_family;
++      sin6.sin6_port = ((struct sockaddr_in6 *) &sa)->sin6_port;
++
 +      sem = sem_open("/rsocket_fork", O_CREAT, 0644, 1);
 +      if (sem == SEM_FAILED)
 +              goto out;
 +
-+      lfd = transpose_socket(last_accept, fd_rsocket);
++      lfd = rsocket(sa.ss_family, SOCK_STREAM, 0);
 +      if (lfd < 0)
-+              goto out;
++              goto sclose;
 +
 +      param = 1;
-+      len = sizeof param;
-+      rsetsockopt(lfd, SOL_SOCKET, SO_REUSEADDR, &param, len);
++      rsetsockopt(lfd, SOL_SOCKET, SO_REUSEADDR, &param, sizeof param);
 +
-+      len = sizeof sa;
-+      ret = real.getsockname(fd, &sa, &len);
++      sem_wait(sem);
++      ret = rbind(lfd, &sin6, sizeof sin6);
 +      if (ret)
-+              goto out;
++              goto lclose;
 +
-+      sem_wait(sem);
-+      ret = rbind()
++      ret = rlisten(lfd, 1);
++      if (ret)
++              goto lclose;
 +
-+      real.close(fd);
++      dfd = raccept(lfd, NULL, NULL);
++      if (dfd < 0)
++              goto lclose;
++
++      param = 1;
++      rsetsockopt(dfd, IPPROTO_TCP, TCP_NODELAY, &param, sizeof param);
++
++      msg = 0;
++      ret = real.write(sfd, &msg, sizeof msg);
++      if (ret != sizeof msg) {
++              rclose(dfd);
++              goto lclose;
++      }
++
++      copysockopts(dfd, sfd, &rs, &real);
++      real.shutdown(sfd, SHUT_RDWR);
++      real.close(sfd);
++      fd_store(last_accept, dfd, fd_rsocket);
 +
++lclose:
++      rclose(lfd);
 +      sem_post(sem);
++sclose:
 +      sem_close(sem);
 +out:
 +      last_accept = -1;
diff --git a/patches/refresh-temp b/patches/refresh-temp
deleted file mode 100644 (file)
index efba49c..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-Bottom: 3ef5d9a598c00e66ce2beafac99c914e0942c3c3
-Top:    89b109b9172f2fd26f7feaca314718e1127b4e64
-Author: Sean Hefty <sean.hefty@intel.com>
-Date:   2012-07-17 12:34:22 -0700
-
-Refresh of fork
-
----
-
-diff --git a/src/preload.c b/src/preload.c
-index 5860a4c..1d76df9 100644
---- a/src/preload.c
-+++ b/src/preload.c
-@@ -818,40 +818,68 @@ int fcntl(int socket, int cmd, ... /* arg */)
- pid_t fork(void)
- {
-       struct sockaddr_storage sa;
-+      struct sockaddr_in6 sin6;
-       pid_t pid;
-       sem_t *sem;
--      int fd, lfd, newfd, ret, len, param;
-+      int lfd, sfd, dfd, ret, len, param;
-       uint32_t msg;
-       init_preload();
-       pid = real.fork();
-       if (pid || !fork_support || (last_accept < 0) ||
--          (fd_get(last_accept, &fd) != fd_fork))
-+          (fd_get(last_accept, &sfd) != fd_fork))
-               goto out;
-+      len = sizeof sa;
-+      ret = real.getsockname(sfd, &sa, &len);
-+      if (ret)
-+              goto out;
-+      sin6.sin6_family = sa.ss_family;
-+      sin6.sin6_port = ((struct sockaddr_in6 *) &sa)->sin6_port;
-+
-       sem = sem_open("/rsocket_fork", O_CREAT, 0644, 1);
-       if (sem == SEM_FAILED)
-               goto out;
--      lfd = transpose_socket(last_accept, fd_rsocket);
-+      lfd = rsocket(sa.ss_family, SOCK_STREAM, 0);
-       if (lfd < 0)
--              goto out;
-+              goto sclose;
-       param = 1;
--      len = sizeof param;
--      rsetsockopt(lfd, SOL_SOCKET, SO_REUSEADDR, &param, len);
-+      rsetsockopt(lfd, SOL_SOCKET, SO_REUSEADDR, &param, sizeof param);
--      len = sizeof sa;
--      ret = real.getsockname(fd, &sa, &len);
-+      sem_wait(sem);
-+      ret = rbind(lfd, &sin6, sizeof sin6);
-       if (ret)
--              goto out;
-+              goto lclose;
--      sem_wait(sem);
--      ret = rbind()
-+      ret = rlisten(lfd, 1);
-+      if (ret)
-+              goto lclose;
--      real.close(fd);
-+      dfd = raccept(lfd, NULL, NULL);
-+      if (dfd < 0)
-+              goto lclose;
-+
-+      param = 1;
-+      rsetsockopt(dfd, IPPROTO_TCP, TCP_NODELAY, &param, sizeof param);
-+
-+      msg = 0;
-+      ret = real.write(sfd, &msg, sizeof msg);
-+      if (ret != sizeof msg) {
-+              rclose(dfd);
-+              goto lclose;
-+      }
-+
-+      copysockopts(dfd, sfd, &rs, &real);
-+      real.shutdown(sfd, SHUT_RDWR);
-+      real.close(sfd);
-+      fd_store(last_accept, dfd, fd_rsocket);
-+lclose:
-+      rclose(lfd);
-       sem_post(sem);
-+sclose:
-       sem_close(sem);
- out:
-       last_accept = -1;