]> git.openfabrics.org - ~shefty/librdmacm.git/commitdiff
refresh
authorSean Hefty <sean.hefty@intel.com>
Sat, 11 Aug 2012 05:13:06 +0000 (22:13 -0700)
committerSean Hefty <sean.hefty@intel.com>
Sat, 11 Aug 2012 05:13:06 +0000 (22:13 -0700)
meta
patches/fork-connect
patches/refresh-temp [deleted file]

diff --git a/meta b/meta
index 4152a26c56878b9b4883e75f30227a8270c3a27c..e1dc3e50da24c00f26883a77ff9491a2bd4d0593 100644 (file)
--- a/meta
+++ b/meta
@@ -1,12 +1,11 @@
 Version: 1
-Previous: 7b5ed8f3aa4c981d0fd5d588c01ab246724c5bbc
-Head: 6d2d228c1827b30af934bc63121140282c3b3282
+Previous: f1b0b772fe7fe9a44c0ea2f6606fb6f0071dd7d7
+Head: 0b26f0861db82da1458125921f1a6cf57d438ab8
 Applied:
   real-close: 3409f8d6af187d25c63a5d1f8ee8bff5f14555e2
   dup2: ca5813e7cf95dee5933fc417e4a34d26f2b01824
   oobinline: ac51c1095f505373a6ec54b8f1d990259fb34d97
-  fork-connect: 8c650d7a0e10582928f0fd3e5d9e045a84fc0b66
-  refresh-temp: 6d2d228c1827b30af934bc63121140282c3b3282
+  fork-connect: 0b26f0861db82da1458125921f1a6cf57d438ab8
 Unapplied:
   dbg-out: 04273ee712db4d53efb390462c1b738bb54a57df
   fstat: a62c653906870422edef5f6388dac9f76c953e35
index a04790c226eb25f8408b02e32923133732bf0e78..4e8301f82ff7bcb64d176115e7b34029048645f1 100644 (file)
@@ -1,5 +1,5 @@
 Bottom: 3ea2748a5c41b11a2e7033c56bddd938d2770b6c
-Top:    216390f24bdb1fa45d9326571f8dd46b1fd804ef
+Top:    64baa18c546931a07eef988a8d6bdef26a73feab
 Author: Sean Hefty <sean.hefty@intel.com>
 Date:   2012-08-10 21:44:39 -0700
 
@@ -28,7 +28,7 @@ Signed-off-by: Sean Hefty <sean.hefty@intel.com>
 ---
 
 diff --git a/src/preload.c b/src/preload.c
-index b18d310..c61d092 100644
+index b18d310..e5d3fcb 100644
 --- a/src/preload.c
 +++ b/src/preload.c
 @@ -99,12 +99,20 @@ static int fork_support;
@@ -106,7 +106,24 @@ index b18d310..c61d092 100644
                        set_rsocket_options(ret);
                }
                return index;
-@@ -427,22 +444,32 @@ int listen(int socket, int backlog)
+@@ -419,30 +436,46 @@ int bind(int socket, const struct sockaddr *addr, socklen_t addrlen)
+ int listen(int socket, int backlog)
+ {
+-      int fd;
+-      return (fd_get(socket, &fd) == fd_rsocket) ?
+-              rlisten(fd, backlog) : real.listen(fd, backlog);
++      int fd, ret;
++      if (fd_get(socket, &fd) == fd_rsocket) {
++              ret = rlisten(fd, backlog);
++      } else {
++              ret = real.listen(fd, backlog);
++              if (!ret && fd_gets(socket) == fd_fork)
++                      fd_store(socket, fd, fd_normal, fd_fork_listen);
++      }
++      return ret;
+ }
  int accept(int socket, struct sockaddr *addr, socklen_t *addrlen)
  {
        int fd, index, ret;
@@ -115,37 +132,37 @@ index b18d310..c61d092 100644
 -      type = fd_get(socket, &fd);
 -      if (type == fd_rsocket || type == fd_fork) {
 +      if (fd_get(socket, &fd) == fd_rsocket) {
-+              index = fd_open();
-+              if (index < 0)
-+                      return index;
-+
-+              ret = raccept(fd, addr, addrlen);
-+              if (ret < 0) {
-+                      fd_close(index, &fd);
-+                      return ret;
-+              }
-+
-+              fd_store(index, ret, fd_rsocket, fd_ready);
-+              return index;
-+      } else if (fd_gets(socket) == fd_fork_listen) {
                index = fd_open();
                if (index < 0)
                        return index;
  
 -              ret = (type == fd_rsocket) ? raccept(fd, addr, addrlen) :
 -                                           real.accept(fd, addr, addrlen);
-+              ret = real.accept(fd, addr, addrlen);
++              ret = raccept(fd, addr, addrlen);
                if (ret < 0) {
                        fd_close(index, &fd);
                        return ret;
                }
  
 -              fd_store(index, ret, type);
++              fd_store(index, ret, fd_rsocket, fd_ready);
++              return index;
++      } else if (fd_gets(socket) == fd_fork_listen) {
++              index = fd_open();
++              if (index < 0)
++                      return index;
++
++              ret = real.accept(fd, addr, addrlen);
++              if (ret < 0) {
++                      fd_close(index, &fd);
++                      return ret;
++              }
++
 +              fd_store(index, ret, fd_normal, fd_fork_passive);
                return index;
        } else {
                return real.accept(fd, addr, addrlen);
-@@ -471,7 +498,7 @@ static int fork_active(int socket, const struct sockaddr *addr, socklen_t addrle
+@@ -471,7 +504,7 @@ static int fork_active(int socket, const struct sockaddr *addr, socklen_t addrle
  
        ret = real.recv(fd, &msg, sizeof msg, MSG_PEEK);
        if ((ret != sizeof msg) || msg) {
@@ -154,7 +171,7 @@ index b18d310..c61d092 100644
                return 0;
        }
  
-@@ -544,7 +571,7 @@ static void fork_passive(int socket)
+@@ -544,7 +577,7 @@ static void fork_passive(int socket)
        copysockopts(dfd, sfd, &rs, &real);
        real.shutdown(sfd, SHUT_RDWR);
        real.close(sfd);
@@ -163,7 +180,7 @@ index b18d310..c61d092 100644
  
  lclose:
        rclose(lfd);
-@@ -553,7 +580,7 @@ sclose:
+@@ -553,7 +586,7 @@ sclose:
        sem_close(sem);
  out:
        if (ret)
@@ -172,7 +189,19 @@ index b18d310..c61d092 100644
  }
  
  static inline enum fd_type fd_fork_get(int index, int *fd)
-@@ -577,10 +604,7 @@ int connect(int socket, const struct sockaddr *addr, socklen_t addrlen)
+@@ -562,8 +595,10 @@ static inline enum fd_type fd_fork_get(int index, int *fd)
+       fdi = idm_lookup(&idm, index);
+       if (fdi) {
+-              if (fdi->type == fd_fork)
++              if (fdi->type == fd_fork_passive)
+                       fork_passive(index);
++              else if (fdi->type == fd_fork_active)
++                      fork_active(index);
+               *fd = fdi->fd;
+               return fdi->type;
+@@ -577,10 +612,7 @@ int connect(int socket, const struct sockaddr *addr, socklen_t addrlen)
  {
        int fd, ret;
  
@@ -184,7 +213,7 @@ index b18d310..c61d092 100644
                ret = rconnect(fd, addr, addrlen);
                if (!ret || errno == EINPROGRESS)
                        return ret;
-@@ -591,12 +615,9 @@ int connect(int socket, const struct sockaddr *addr, socklen_t addrlen)
+@@ -591,12 +623,10 @@ int connect(int socket, const struct sockaddr *addr, socklen_t addrlen)
  
                rclose(fd);
                fd = ret;
@@ -192,6 +221,7 @@ index b18d310..c61d092 100644
 -      default:
 -              break;
 +      } else {
++              /* Set state to fork_active if nonblocking.  if blocking fork_active */
 +              return real.connect(fd, addr, addrlen);
        }
 -
diff --git a/patches/refresh-temp b/patches/refresh-temp
deleted file mode 100644 (file)
index cc10bb6..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-Bottom: 216390f24bdb1fa45d9326571f8dd46b1fd804ef
-Top:    64baa18c546931a07eef988a8d6bdef26a73feab
-Author: Sean Hefty <sean.hefty@intel.com>
-Date:   2012-08-10 22:13:06 -0700
-
-Refresh of fork-connect
-
----
-
-diff --git a/src/preload.c b/src/preload.c
-index c61d092..e5d3fcb 100644
---- a/src/preload.c
-+++ b/src/preload.c
-@@ -436,9 +436,15 @@ int bind(int socket, const struct sockaddr *addr, socklen_t addrlen)
- int listen(int socket, int backlog)
- {
--      int fd;
--      return (fd_get(socket, &fd) == fd_rsocket) ?
--              rlisten(fd, backlog) : real.listen(fd, backlog);
-+      int fd, ret;
-+      if (fd_get(socket, &fd) == fd_rsocket) {
-+              ret = rlisten(fd, backlog);
-+      } else {
-+              ret = real.listen(fd, backlog);
-+              if (!ret && fd_gets(socket) == fd_fork)
-+                      fd_store(socket, fd, fd_normal, fd_fork_listen);
-+      }
-+      return ret;
- }
- int accept(int socket, struct sockaddr *addr, socklen_t *addrlen)
-@@ -589,8 +595,10 @@ static inline enum fd_type fd_fork_get(int index, int *fd)
-       fdi = idm_lookup(&idm, index);
-       if (fdi) {
--              if (fdi->type == fd_fork)
-+              if (fdi->type == fd_fork_passive)
-                       fork_passive(index);
-+              else if (fdi->type == fd_fork_active)
-+                      fork_active(index);
-               *fd = fdi->fd;
-               return fdi->type;
-@@ -616,6 +624,7 @@ int connect(int socket, const struct sockaddr *addr, socklen_t addrlen)
-               rclose(fd);
-               fd = ret;
-       } else {
-+              /* Set state to fork_active if nonblocking.  if blocking fork_active */
-               return real.connect(fd, addr, addrlen);
-       }
- }