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

diff --git a/meta b/meta
index 8b6e7bda61333d6885807a336ab6fb8bc2e5fc9a..d48329eafeba265e08594cf1b59ee6d1d7fdcdc1 100644 (file)
--- a/meta
+++ b/meta
@@ -1,9 +1,8 @@
 Version: 1
-Previous: 4cfd03cf579e393a56ed58e67b2b1c97c2d94cd6
-Head: a9ce8ee6e369358105eb2ad7808127b7027619cb
+Previous: 1761e63eba6d36ba8955bef7508c320e2ff7dba5
+Head: 8081f96f8481d898d8de86cbadac1ae459c93306
 Applied:
-  transpose: 03f4d89839a16c30de3e5094b587e5c4b386adc4
-  refresh-temp: a9ce8ee6e369358105eb2ad7808127b7027619cb
+  transpose: 8081f96f8481d898d8de86cbadac1ae459c93306
 Unapplied:
   fork: 9ec908638bd6c7254b466334d94c30f6a3a61360
   waitall-buggy: c49c6b56c55385774065f5aa2704078e6ae0ceb8
diff --git a/patches/refresh-temp b/patches/refresh-temp
deleted file mode 100644 (file)
index 5ce4927..0000000
+++ /dev/null
@@ -1,152 +0,0 @@
-Bottom: a8d2f5e9e4909e604d5a7b614f02d08080507dcb
-Top:    5fd229f7e20bde0c0ed3050847f79e5d4c8af2b1
-Author: Sean Hefty <sean.hefty@intel.com>
-Date:   2012-07-17 10:19:20 -0700
-
-Refresh of transpose
-
----
-
-diff --git a/src/preload.c b/src/preload.c
-index 498e813..8f281d3 100644
---- a/src/preload.c
-+++ b/src/preload.c
-@@ -276,60 +276,73 @@ out:
- }
- /*
-- * Convert between an rsocket and a normal socket.  The new socket should have
-- * the same settings and bindings as the current socket.  We currently only
-- * handle setting a few of the more common values.
-+ * We currently only handle copying a few common values.
-  */
--static int transpose_socket(int index, int *fd, enum fd_type new_type)
-+static int copysockopts(int dfd, int sfd, struct socket_calls *dapi,
-+                      struct socket_calls *sapi)
-+{
-+      socklen_t len;
-+      int param, ret;
-+
-+      ret = sapi->fcntl(sfd, F_GETFL);
-+      if (ret > 0)
-+              ret = dapi->fcntl(dfd, F_SETFL, ret);
-+      if (ret)
-+              return ret;
-+
-+      len = sizeof param;
-+      ret = sapi->getsockopt(sfd, SOL_SOCKET, SO_REUSEADDR, &param, &len);
-+      if (param && !ret)
-+              ret = dapi->setsockopt(dfd, SOL_SOCKET, SO_REUSEADDR, &param, len);
-+      if (ret)
-+              return ret;
-+
-+      len = sizeof param;
-+      ret = sapi->getsockopt(sfd, IPPROTO_TCP, TCP_NODELAY, &param, &len);
-+      if (param && !ret)
-+              ret = dapi->setsockopt(dfd, IPPROTO_TCP, TCP_NODELAY, &param, len);
-+      if (ret)
-+              return ret;
-+
-+      return 0;
-+}
-+
-+/*
-+ * Convert between an rsocket and a normal socket.
-+ */
-+static int transpose_socket(int socket, enum fd_type new_type)
- {
-       socklen_t len = 0;
--      int new_fd, param, ret;
--      struct socket_calls *new, *old;
-+      int sfd, dfd, param, ret;
-+      struct socket_calls *sapi, *dapi;
-+      sfd = fd_getd(socket);
-       if (new_type == fd_rsocket) {
--              new = &rs;
--              old = &real;
-+              dapi = &rs;
-+              sapi = &real;
-       } else {
--              new = &real;
--              old = &rs;
-+              dapi = &real;
-+              sapi = &rs;
-       }
--      ret = old->getsockname(*fd, NULL, &len);
-+      ret = sapi->getsockname(sfd, NULL, &len);
-       if (ret)
-               return ret;
-       param = (len == sizeof(struct sockaddr_in6)) ? PF_INET6 : PF_INET;
--      new_fd = new->socket(param, SOCK_STREAM, 0);
--      if (new_fd < 0)
--              return new_fd;
--
--      ret = old->fcntl(*fd, F_GETFL);
--      if (ret > 0)
--              ret = new->fcntl(new_fd, F_SETFL, ret);
--      if (ret)
--              goto err;
--
--      len = sizeof param;
--      ret = old->getsockopt(*fd, SOL_SOCKET, SO_REUSEADDR, &param, &len);
--      if (param && !ret)
--              ret = new->setsockopt(new_fd, SOL_SOCKET, SO_REUSEADDR, &param, len);
--      if (ret)
--              goto err;
-+      dfd = dapi->socket(param, SOCK_STREAM, 0);
-+      if (dfd < 0)
-+              return dfd;
--      len = sizeof param;
--      ret = old->getsockopt(*fd, IPPROTO_TCP, TCP_NODELAY, &param, &len);
--      if (param && !ret)
--              ret = new->setsockopt(new_fd, IPPROTO_TCP, TCP_NODELAY, &param, len);
-+      ret = copysockopts(dfd, sfd, dapi, sapi);
-       if (ret)
-               goto err;
--      old->close(*fd);
--      fd_store(socket, new_fd, new_type);
--      *fd = new_fd;
--      return 0;
-+      fd_store(socket, dfd, new_type);
-+      return dfd;
- err:
--      new->close(new_fd);
-+      dapi->close(dfd);
-       return ret;
- }
-@@ -384,9 +397,12 @@ int bind(int socket, const struct sockaddr *addr, socklen_t addrlen)
-               if (!sin->sin_port || ntohs(sin->sin_port) > 1024)
-                       return rbind(fd, addr, addrlen);
--              ret = transpose_socket(socket, &fd, fd_normal);
--              if (ret)
-+              ret = transpose_socket(socket, fd_normal);
-+              if (ret < 0)
-                       return ret;
-+
-+              rclose(fd);
-+              fd = ret;
-       }
-       return real.bind(fd, addr, addrlen);
-@@ -434,9 +450,12 @@ int connect(int socket, const struct sockaddr *addr, socklen_t addrlen)
-                               return ret;
-               }
--              ret = transpose_socket(socket, &fd, fd_normal);
-+              ret = transpose_socket(socket, fd_normal);
-               if (ret)
-                       return ret;
-+
-+              rclose(fd);
-+              fd = ret;
-       }
-       return real.connect(fd, addr, addrlen);
index d7c1adf0858dd01496c5c29254e5981e1c9029a1..d2f9e5cc724a92aabaf83e90fcd9d5c0d03e5ba7 100644 (file)
@@ -1,5 +1,5 @@
 Bottom: 7ec243f3149e9a1ff1d5183f18e30d2458e354d6
-Top:    a8d2f5e9e4909e604d5a7b614f02d08080507dcb
+Top:    5fd229f7e20bde0c0ed3050847f79e5d4c8af2b1
 Author: Sean Hefty <sean.hefty@intel.com>
 Date:   2012-07-16 14:17:58 -0700
 
@@ -17,7 +17,7 @@ Signed-off-by: Sean Hefty <sean.hefty@intel.com>
 ---
 
 diff --git a/src/preload.c b/src/preload.c
-index 2750b30..498e813 100644
+index 2750b30..8f281d3 100644
 --- a/src/preload.c
 +++ b/src/preload.c
 @@ -53,38 +53,38 @@
@@ -168,83 +168,109 @@ index 2750b30..498e813 100644
  
        getenv_options();
        init = 1;
-@@ -252,51 +276,60 @@ out:
+@@ -252,51 +276,73 @@ out:
  }
  
  /*
 - * Convert from an rsocket to a normal socket.  The new socket should have the
 - * same settings and bindings as the rsocket.  We currently only handle setting
 - * a few of the more common values.
-+ * Convert between an rsocket and a normal socket.  The new socket should have
-+ * the same settings and bindings as the current socket.  We currently only
-+ * handle setting a few of the more common values.
++ * We currently only handle copying a few common values.
   */
 -static int socket_fallback(int socket, int *fd)
-+static int transpose_socket(int index, int *fd, enum fd_type new_type)
++static int copysockopts(int dfd, int sfd, struct socket_calls *dapi,
++                      struct socket_calls *sapi)
  {
-       socklen_t len = 0;
-       int new_fd, param, ret;
-+      struct socket_calls *new, *old;
-+
-+      if (new_type == fd_rsocket) {
-+              new = &rs;
-+              old = &real;
-+      } else {
-+              new = &real;
-+              old = &rs;
-+      }
+-      socklen_t len = 0;
+-      int new_fd, param, ret;
++      socklen_t len;
++      int param, ret;
  
 -      ret = rgetsockname(*fd, NULL, &len);
-+      ret = old->getsockname(*fd, NULL, &len);
-       if (ret)
-               return ret;
-       param = (len == sizeof(struct sockaddr_in6)) ? PF_INET6 : PF_INET;
+-      if (ret)
+-              return ret;
+-
+-      param = (len == sizeof(struct sockaddr_in6)) ? PF_INET6 : PF_INET;
 -      new_fd = real_socket(param, SOCK_STREAM, IPPROTO_TCP);
-+      new_fd = new->socket(param, SOCK_STREAM, 0);
-       if (new_fd < 0)
-               return new_fd;
+-      if (new_fd < 0)
+-              return new_fd;
+-
 -      ret = rfcntl(*fd, F_GETFL);
-+      ret = old->fcntl(*fd, F_GETFL);
++      ret = sapi->fcntl(sfd, F_GETFL);
        if (ret > 0)
 -              ret = real_fcntl(new_fd, F_SETFL, ret);
-+              ret = new->fcntl(new_fd, F_SETFL, ret);
++              ret = dapi->fcntl(dfd, F_SETFL, ret);
        if (ret)
-               goto err;
+-              goto err;
++              return ret;
  
        len = sizeof param;
 -      ret = rgetsockopt(*fd, SOL_SOCKET, SO_REUSEADDR, &param, &len);
-+      ret = old->getsockopt(*fd, SOL_SOCKET, SO_REUSEADDR, &param, &len);
++      ret = sapi->getsockopt(sfd, SOL_SOCKET, SO_REUSEADDR, &param, &len);
        if (param && !ret)
 -              ret = real_setsockopt(new_fd, SOL_SOCKET, SO_REUSEADDR, &param, len);
-+              ret = new->setsockopt(new_fd, SOL_SOCKET, SO_REUSEADDR, &param, len);
++              ret = dapi->setsockopt(dfd, SOL_SOCKET, SO_REUSEADDR, &param, len);
        if (ret)
-               goto err;
+-              goto err;
++              return ret;
  
        len = sizeof param;
 -      ret = rgetsockopt(*fd, IPPROTO_TCP, TCP_NODELAY, &param, &len);
-+      ret = old->getsockopt(*fd, IPPROTO_TCP, TCP_NODELAY, &param, &len);
++      ret = sapi->getsockopt(sfd, IPPROTO_TCP, TCP_NODELAY, &param, &len);
        if (param && !ret)
 -              ret = real_setsockopt(new_fd, IPPROTO_TCP, TCP_NODELAY, &param, len);
-+              ret = new->setsockopt(new_fd, IPPROTO_TCP, TCP_NODELAY, &param, len);
++              ret = dapi->setsockopt(dfd, IPPROTO_TCP, TCP_NODELAY, &param, len);
        if (ret)
-               goto err;
+-              goto err;
++              return ret;
  
 -      rclose(*fd);
 -      fd_store(socket, new_fd, fd_normal);
-+      old->close(*fd);
-+      fd_store(socket, new_fd, new_type);
-       *fd = new_fd;
+-      *fd = new_fd;
        return 0;
++}
++
++/*
++ * Convert between an rsocket and a normal socket.
++ */
++static int transpose_socket(int socket, enum fd_type new_type)
++{
++      socklen_t len = 0;
++      int sfd, dfd, param, ret;
++      struct socket_calls *sapi, *dapi;
++
++      sfd = fd_getd(socket);
++      if (new_type == fd_rsocket) {
++              dapi = &rs;
++              sapi = &real;
++      } else {
++              dapi = &real;
++              sapi = &rs;
++      }
++
++      ret = sapi->getsockname(sfd, NULL, &len);
++      if (ret)
++              return ret;
++
++      param = (len == sizeof(struct sockaddr_in6)) ? PF_INET6 : PF_INET;
++      dfd = dapi->socket(param, SOCK_STREAM, 0);
++      if (dfd < 0)
++              return dfd;
++
++      ret = copysockopts(dfd, sfd, dapi, sapi);
++      if (ret)
++              goto err;
++
++      fd_store(socket, dfd, new_type);
++      return dfd;
  
  err:
 -      real_close(new_fd);
-+      new->close(new_fd);
++      dapi->close(dfd);
        return ret;
  }
  
-@@ -338,7 +371,7 @@ int socket(int domain, int type, int protocol)
+@@ -338,7 +384,7 @@ int socket(int domain, int type, int protocol)
        }
        fd_close(index, &ret);
  real:
@@ -253,14 +279,18 @@ index 2750b30..498e813 100644
  }
  
  int bind(int socket, const struct sockaddr *addr, socklen_t addrlen)
-@@ -351,19 +384,19 @@ int bind(int socket, const struct sockaddr *addr, socklen_t addrlen)
+@@ -351,19 +397,22 @@ int bind(int socket, const struct sockaddr *addr, socklen_t addrlen)
                if (!sin->sin_port || ntohs(sin->sin_port) > 1024)
                        return rbind(fd, addr, addrlen);
  
 -              ret = socket_fallback(socket, &fd);
-+              ret = transpose_socket(socket, &fd, fd_normal);
-               if (ret)
+-              if (ret)
++              ret = transpose_socket(socket, fd_normal);
++              if (ret < 0)
                        return ret;
++
++              rclose(fd);
++              fd = ret;
        }
  
 -      return real_bind(fd, addr, addrlen);
@@ -276,7 +306,7 @@ index 2750b30..498e813 100644
  }
  
  int accept(int socket, struct sockaddr *addr, socklen_t *addrlen)
-@@ -384,7 +417,7 @@ int accept(int socket, struct sockaddr *addr, socklen_t *addrlen)
+@@ -384,7 +433,7 @@ int accept(int socket, struct sockaddr *addr, socklen_t *addrlen)
                fd_store(index, ret, fd_rsocket);
                return index;
        } else {
@@ -285,14 +315,17 @@ index 2750b30..498e813 100644
        }
  }
  
-@@ -401,19 +434,19 @@ int connect(int socket, const struct sockaddr *addr, socklen_t addrlen)
+@@ -401,19 +450,22 @@ int connect(int socket, const struct sockaddr *addr, socklen_t addrlen)
                                return ret;
                }
  
 -              ret = socket_fallback(socket, &fd);
-+              ret = transpose_socket(socket, &fd, fd_normal);
++              ret = transpose_socket(socket, fd_normal);
                if (ret)
                        return ret;
++
++              rclose(fd);
++              fd = ret;
        }
  
 -      return real_connect(fd, addr, addrlen);
@@ -308,7 +341,7 @@ index 2750b30..498e813 100644
  }
  
  ssize_t recvfrom(int socket, void *buf, size_t len, int flags,
-@@ -422,14 +455,14 @@ ssize_t recvfrom(int socket, void *buf, size_t len, int flags,
+@@ -422,14 +474,14 @@ ssize_t recvfrom(int socket, void *buf, size_t len, int flags,
        int fd;
        return (fd_get(socket, &fd) == fd_rsocket) ?
                rrecvfrom(fd, buf, len, flags, src_addr, addrlen) :
@@ -325,7 +358,7 @@ index 2750b30..498e813 100644
  }
  
  ssize_t read(int socket, void *buf, size_t count)
-@@ -437,7 +470,7 @@ ssize_t read(int socket, void *buf, size_t count)
+@@ -437,7 +489,7 @@ ssize_t read(int socket, void *buf, size_t count)
        int fd;
        init_preload();
        return (fd_get(socket, &fd) == fd_rsocket) ?
@@ -334,7 +367,7 @@ index 2750b30..498e813 100644
  }
  
  ssize_t readv(int socket, const struct iovec *iov, int iovcnt)
-@@ -445,14 +478,14 @@ ssize_t readv(int socket, const struct iovec *iov, int iovcnt)
+@@ -445,14 +497,14 @@ ssize_t readv(int socket, const struct iovec *iov, int iovcnt)
        int fd;
        init_preload();
        return (fd_get(socket, &fd) == fd_rsocket) ?
@@ -351,7 +384,7 @@ index 2750b30..498e813 100644
  }
  
  ssize_t sendto(int socket, const void *buf, size_t len, int flags,
-@@ -461,14 +494,14 @@ ssize_t sendto(int socket, const void *buf, size_t len, int flags,
+@@ -461,14 +513,14 @@ ssize_t sendto(int socket, const void *buf, size_t len, int flags,
        int fd;
        return (fd_get(socket, &fd) == fd_rsocket) ?
                rsendto(fd, buf, len, flags, dest_addr, addrlen) :
@@ -368,7 +401,7 @@ index 2750b30..498e813 100644
  }
  
  ssize_t write(int socket, const void *buf, size_t count)
-@@ -476,7 +509,7 @@ ssize_t write(int socket, const void *buf, size_t count)
+@@ -476,7 +528,7 @@ ssize_t write(int socket, const void *buf, size_t count)
        int fd;
        init_preload();
        return (fd_get(socket, &fd) == fd_rsocket) ?
@@ -377,7 +410,7 @@ index 2750b30..498e813 100644
  }
  
  ssize_t writev(int socket, const struct iovec *iov, int iovcnt)
-@@ -484,7 +517,7 @@ ssize_t writev(int socket, const struct iovec *iov, int iovcnt)
+@@ -484,7 +536,7 @@ ssize_t writev(int socket, const struct iovec *iov, int iovcnt)
        int fd;
        init_preload();
        return (fd_get(socket, &fd) == fd_rsocket) ?
@@ -386,7 +419,7 @@ index 2750b30..498e813 100644
  }
  
  static struct pollfd *fds_alloc(nfds_t nfds)
-@@ -514,7 +547,7 @@ int poll(struct pollfd *fds, nfds_t nfds, int timeout)
+@@ -514,7 +566,7 @@ int poll(struct pollfd *fds, nfds_t nfds, int timeout)
                        goto use_rpoll;
        }
  
@@ -395,7 +428,7 @@ index 2750b30..498e813 100644
  
  use_rpoll:
        rfds = fds_alloc(nfds);
-@@ -619,14 +652,14 @@ int shutdown(int socket, int how)
+@@ -619,14 +671,14 @@ int shutdown(int socket, int how)
  {
        int fd;
        return (fd_get(socket, &fd) == fd_rsocket) ?
@@ -412,7 +445,7 @@ index 2750b30..498e813 100644
  }
  
  int getpeername(int socket, struct sockaddr *addr, socklen_t *addrlen)
-@@ -634,7 +667,7 @@ int getpeername(int socket, struct sockaddr *addr, socklen_t *addrlen)
+@@ -634,7 +686,7 @@ int getpeername(int socket, struct sockaddr *addr, socklen_t *addrlen)
        int fd;
        return (fd_get(socket, &fd) == fd_rsocket) ?
                rgetpeername(fd, addr, addrlen) :
@@ -421,7 +454,7 @@ index 2750b30..498e813 100644
  }
  
  int getsockname(int socket, struct sockaddr *addr, socklen_t *addrlen)
-@@ -642,7 +675,7 @@ int getsockname(int socket, struct sockaddr *addr, socklen_t *addrlen)
+@@ -642,7 +694,7 @@ int getsockname(int socket, struct sockaddr *addr, socklen_t *addrlen)
        int fd;
        return (fd_get(socket, &fd) == fd_rsocket) ?
                rgetsockname(fd, addr, addrlen) :
@@ -430,7 +463,7 @@ index 2750b30..498e813 100644
  }
  
  int setsockopt(int socket, int level, int optname,
-@@ -651,7 +684,7 @@ int setsockopt(int socket, int level, int optname,
+@@ -651,7 +703,7 @@ int setsockopt(int socket, int level, int optname,
        int fd;
        return (fd_get(socket, &fd) == fd_rsocket) ?
                rsetsockopt(fd, level, optname, optval, optlen) :
@@ -439,7 +472,7 @@ index 2750b30..498e813 100644
  }
  
  int getsockopt(int socket, int level, int optname,
-@@ -660,7 +693,7 @@ int getsockopt(int socket, int level, int optname,
+@@ -660,7 +712,7 @@ int getsockopt(int socket, int level, int optname,
        int fd;
        return (fd_get(socket, &fd) == fd_rsocket) ?
                rgetsockopt(fd, level, optname, optval, optlen) :
@@ -448,7 +481,7 @@ index 2750b30..498e813 100644
  }
  
  int fcntl(int socket, int cmd, ... /* arg */)
-@@ -679,7 +712,7 @@ int fcntl(int socket, int cmd, ... /* arg */)
+@@ -679,7 +731,7 @@ int fcntl(int socket, int cmd, ... /* arg */)
        case F_GETSIG:
        case F_GETLEASE:
                ret = (fd_get(socket, &fd) == fd_rsocket) ?
@@ -457,7 +490,7 @@ index 2750b30..498e813 100644
                break;
        case F_DUPFD:
        /*case F_DUPFD_CLOEXEC:*/
-@@ -691,12 +724,12 @@ int fcntl(int socket, int cmd, ... /* arg */)
+@@ -691,12 +743,12 @@ int fcntl(int socket, int cmd, ... /* arg */)
        case F_NOTIFY:
                lparam = va_arg(args, long);
                ret = (fd_get(socket, &fd) == fd_rsocket) ?