Version: 1
-Previous: 1bdfd2f8bf977c39e8a950db70dffa81e10e9e2a
-Head: ea7a06860095d5f8b1408394cbc0dba394867f6a
+Previous: 1c0d74185364be75022dbb84fcacb903e3ecd4e5
+Head: 86a08269137ad38f2d34ab5b2b2131018986b931
Applied:
- transpose: 33ebfdf89e5ba9a69cc9001625155c351c7c7cd5
- refresh-temp: ea7a06860095d5f8b1408394cbc0dba394867f6a
+ transpose: 86a08269137ad38f2d34ab5b2b2131018986b931
Unapplied:
fork: d62b389a7f30187f39e8c6ae709fbdbf8423e7e8
waitall-buggy: c49c6b56c55385774065f5aa2704078e6ae0ceb8
+++ /dev/null
-Bottom: 8ec84e6e24d58093de94f5921ca22d6e4c566290
-Top: 18cd5fab283e42099140977cad709ad19315ac7a
-Author: Sean Hefty <sean.hefty@intel.com>
-Date: 2012-07-16 14:20:30 -0700
-
-Refresh of transpose
-
----
-
-diff --git a/src/preload.c b/src/preload.c
-index 8b9fbaf..69597e0 100644
---- a/src/preload.c
-+++ b/src/preload.c
-@@ -92,12 +92,10 @@ static pthread_mutex_t mut = PTHREAD_MUTEX_INITIALIZER;
- static int sq_size;
- static int rq_size;
- static int sq_inline;
--static int fork_support;
-
- enum fd_type {
- fd_normal,
-- fd_rsocket,
-- fd_fork
-+ fd_rsocket
- };
-
- struct fd_info {
-@@ -209,10 +207,6 @@ void getenv_options(void)
- var = getenv("RS_INLINE");
- if (var)
- sq_inline = atoi(var);
--
-- var = getenv("RDMAV_FORK_SAFE");
-- if (var)
-- fork_support = atoi(var);
- }
-
- static void init_preload(void)
-@@ -400,16 +394,8 @@ int socket(int domain, int type, int protocol)
- ret = rsocket(domain, type, protocol);
- recursive = 0;
- if (ret >= 0) {
-- if (fork_support) {
-- rclose(ret);
-- ret = real_socket(domain, type, protocol);
-- if (ret < 0)
-- return ret;
-- fd_store(index, ret, fd_fork);
-- } else {
-- fd_store(index, ret, fd_rsocket);
-- set_rsocket_options(ret);
-- }
-+ fd_store(index, ret, fd_rsocket);
-+ set_rsocket_options(ret);
- return index;
- }
- fd_close(index, &ret);
-@@ -464,29 +450,6 @@ int accept(int socket, struct sockaddr *addr, socklen_t *addrlen)
- }
- }
-
--static int connect_fork(int socket, const struct sockaddr *addr, socklen_t addrlen)
--{
-- uint32_t msg;
-- int rs, fd, ret;
--
-- fd = fd_getd(socket);
-- ret = real_connect(fd, addr, addrlen);
-- if (!ret)
-- return ret;
--
-- ret = real_read(fd, &msg, sizeof msg);
-- if (ret != sizeof msg)
-- return ret;
--
-- rs = rsocket(domain, type, protocol);
--
-- real_shutdown(fd, SHUT_RDWR);
-- real_close(fd);
--
-- fd_store(socket, fd, fd_rsocket);
-- return connect(socket, addr, addrlen);
--}
--
- int connect(int socket, const struct sockaddr *addr, socklen_t addrlen)
- {
- struct sockaddr_in *sin;
Bottom: 7ec243f3149e9a1ff1d5183f18e30d2458e354d6
-Top: 8ec84e6e24d58093de94f5921ca22d6e4c566290
+Top: 18cd5fab283e42099140977cad709ad19315ac7a
Author: Sean Hefty <sean.hefty@intel.com>
Date: 2012-07-16 14:17:58 -0700
---
diff --git a/src/preload.c b/src/preload.c
-index 2750b30..8b9fbaf 100644
+index 2750b30..69597e0 100644
--- a/src/preload.c
+++ b/src/preload.c
-@@ -92,10 +92,12 @@ static pthread_mutex_t mut = PTHREAD_MUTEX_INITIALIZER;
- static int sq_size;
- static int rq_size;
- static int sq_inline;
-+static int fork_support;
-
- enum fd_type {
- fd_normal,
-- fd_rsocket
-+ fd_rsocket,
-+ fd_fork
- };
-
- struct fd_info {
-@@ -207,6 +209,10 @@ void getenv_options(void)
- var = getenv("RS_INLINE");
- if (var)
- sq_inline = atoi(var);
-+
-+ var = getenv("RDMAV_FORK_SAFE");
-+ if (var)
-+ fork_support = atoi(var);
- }
-
- static void init_preload(void)
-@@ -301,6 +307,68 @@ err:
+@@ -301,6 +301,68 @@ err:
}
/*
* Use defaults on failure.
*/
void set_rsocket_options(int rsocket)
-@@ -332,8 +400,16 @@ int socket(int domain, int type, int protocol)
- ret = rsocket(domain, type, protocol);
- recursive = 0;
- if (ret >= 0) {
-- fd_store(index, ret, fd_rsocket);
-- set_rsocket_options(ret);
-+ if (fork_support) {
-+ rclose(ret);
-+ ret = real_socket(domain, type, protocol);
-+ if (ret < 0)
-+ return ret;
-+ fd_store(index, ret, fd_fork);
-+ } else {
-+ fd_store(index, ret, fd_rsocket);
-+ set_rsocket_options(ret);
-+ }
- return index;
- }
- fd_close(index, &ret);
-@@ -388,6 +464,29 @@ int accept(int socket, struct sockaddr *addr, socklen_t *addrlen)
- }
- }
-
-+static int connect_fork(int socket, const struct sockaddr *addr, socklen_t addrlen)
-+{
-+ uint32_t msg;
-+ int rs, fd, ret;
-+
-+ fd = fd_getd(socket);
-+ ret = real_connect(fd, addr, addrlen);
-+ if (!ret)
-+ return ret;
-+
-+ ret = real_read(fd, &msg, sizeof msg);
-+ if (ret != sizeof msg)
-+ return ret;
-+
-+ rs = rsocket(domain, type, protocol);
-+
-+ real_shutdown(fd, SHUT_RDWR);
-+ real_close(fd);
-+
-+ fd_store(socket, fd, fd_rsocket);
-+ return connect(socket, addr, addrlen);
-+}
-+
- int connect(int socket, const struct sockaddr *addr, socklen_t addrlen)
- {
- struct sockaddr_in *sin;