]> git.openfabrics.org - ~shefty/librdmacm.git/commitdiff
refresh
authorSean Hefty <sean.hefty@intel.com>
Fri, 23 Aug 2013 00:16:29 +0000 (17:16 -0700)
committerSean Hefty <sean.hefty@intel.com>
Fri, 23 Aug 2013 00:16:29 +0000 (17:16 -0700)
meta
patches/refresh-temp [deleted file]
patches/shutdown

diff --git a/meta b/meta
index 9d2abf3badd99cffa41b86e27abeb83a81008bc9..a987e687476896a399db685b9896c703a4f804d2 100644 (file)
--- a/meta
+++ b/meta
@@ -1,9 +1,8 @@
 Version: 1
-Previous: 50380b86b0aa3c9255b18470c7fc89a86390054c
-Head: 47bb8687c6ef7b349e2c6e98feebc1a4a913e5e4
+Previous: d91f12a746444b4538c812f3f00e1fb63b1d63bd
+Head: 866f6459a78183f4a5a654800a8fd087ab2ce534
 Applied:
-  shutdown: 9b78a85a13e1742171ee311668730d6853400d68
-  refresh-temp: 47bb8687c6ef7b349e2c6e98feebc1a4a913e5e4
+  shutdown: 866f6459a78183f4a5a654800a8fd087ab2ce534
 Unapplied:
   old-af-ib: d71ebf70cf74111cfd5f0982d9abe6ec68fb38e3
   old-seterr: 47eb0c419687c2690292c1910acae83a46e5388c
diff --git a/patches/refresh-temp b/patches/refresh-temp
deleted file mode 100644 (file)
index d8feae6..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-Bottom: be51a8dcbbfb275a2e110375bff2d15cf10dc8e9
-Top:    e17d0dd680820260f177d598f36f7d3f76f02a6f
-Author: Sean Hefty <sean.hefty@intel.com>
-Date:   2013-08-22 17:16:29 -0700
-
-Refresh of shutdown
-
----
-
-diff --git a/src/rsocket.c b/src/rsocket.c
-index e45b26d..b4f5891 100644
---- a/src/rsocket.c
-+++ b/src/rsocket.c
-@@ -133,7 +133,8 @@ enum {
- enum {
-       RS_CTRL_DISCONNECT,
--      RS_CTRL_SHUTDOWN
-+      RS_CTRL_SHUTDOWN,
-+      RS_CTRL_SYNC
- };
- struct rs_msg {
-@@ -1822,7 +1823,12 @@ static int rs_poll_cq(struct rsocket *rs)
-                                       rs->state = rs_disconnected;
-                                       return 0;
-                               } else if (rs_msg_data(msg) == RS_CTRL_SHUTDOWN) {
--                                      rs->state &= ~rs_readable;
-+                                      if (rs->state & rs_writable) {
-+                                              rs->state &= ~rs_readable;
-+                                      } else {
-+                                              rs->state = rs_disconnected;
-+                                              return 0;
-+                                      }
-                               }
-                               break;
-                       case RS_OP_WRITE:
-@@ -3109,10 +3115,10 @@ int rshutdown(int socket, int how)
-       int ctrl, ret = 0;
-       rs = idm_at(&idm, socket);
--      if (how == SHUT_RD) {
--              rs->state &= ~rs_readable;
--              return 0;
--      }
-+//    if (how == SHUT_RD) {
-+//            rs->state &= ~rs_readable;
-+//            return 0;
-+//    }
-       if (rs->fd_flags & O_NONBLOCK)
-               rs_set_nonblocking(rs, 0);
-@@ -3121,15 +3127,20 @@ int rshutdown(int socket, int how)
-               if (how == SHUT_RDWR) {
-                       ctrl = RS_CTRL_DISCONNECT;
-                       rs->state &= ~(rs_readable | rs_writable);
--              } else {
-+              } else if (how == SHUT_WR) {
-                       rs->state &= ~rs_writable;
-                       ctrl = (rs->state & rs_readable) ?
-                               RS_CTRL_SHUTDOWN : RS_CTRL_DISCONNECT;
-+              } else {
-+                      rs->state &= ~rs_readable;
-+                      if (rs->state & rs_writable)
-+                              goto out;
-+                      ctrl = RS_CTRL_DISCONNECT;
-               }
-               if (!rs->ctrl_avail) {
-                       ret = rs_process_cq(rs, 0, rs_conn_can_send_ctrl);
-                       if (ret)
--                              return ret;
-+                              goto out;
-               }
-               if ((rs->state & rs_connected) && rs->ctrl_avail) {
-@@ -3141,16 +3152,17 @@ int rshutdown(int socket, int how)
-       if (rs->state & rs_connected)
-               rs_process_cq(rs, 0, rs_conn_all_sends_done);
-+out:
-+      if ((rs->fd_flags & O_NONBLOCK) && (rs->state & rs_connected))
-+              rs_set_nonblocking(rs, rs->fd_flags);
-+
-       if (rs->state & rs_disconnected) {
-               /* Generate event by flushing receives to unblock rpoll */
-               ibv_req_notify_cq(rs->cm_id->recv_cq, 0);
-               rdma_disconnect(rs->cm_id);
-       }
--      if ((rs->fd_flags & O_NONBLOCK) && (rs->state & rs_connected))
--              rs_set_nonblocking(rs, rs->fd_flags);
--
--      return 0;
-+      return ret;
- }
- static void ds_shutdown(struct rsocket *rs)
index abfdf690f7aa2f56609d349fa9596bf5a3e5954d..cfe0a6da3174bd8c3b74de1ac95d0bee2f758199 100644 (file)
@@ -1,5 +1,5 @@
 Bottom: ffbbb287b1a2e4fbdbcedb90103f988acb8fcb42
-Top:    be51a8dcbbfb275a2e110375bff2d15cf10dc8e9
+Top:    e17d0dd680820260f177d598f36f7d3f76f02a6f
 Author: Sean Hefty <sean.hefty@intel.com>
 Date:   2013-08-16 15:15:12 -0700
 
@@ -11,10 +11,34 @@ Signed-off-by: Sean Hefty <sean.hefty@intel.com>
 ---
 
 diff --git a/src/rsocket.c b/src/rsocket.c
-index d544dd0..e45b26d 100644
+index d544dd0..b4f5891 100644
 --- a/src/rsocket.c
 +++ b/src/rsocket.c
-@@ -2948,10 +2948,12 @@ static int rs_poll_events(struct pollfd *rfds, struct pollfd *fds, nfds_t nfds)
+@@ -133,7 +133,8 @@ enum {
+ enum {
+       RS_CTRL_DISCONNECT,
+-      RS_CTRL_SHUTDOWN
++      RS_CTRL_SHUTDOWN,
++      RS_CTRL_SYNC
+ };
+ struct rs_msg {
+@@ -1822,7 +1823,12 @@ static int rs_poll_cq(struct rsocket *rs)
+                                       rs->state = rs_disconnected;
+                                       return 0;
+                               } else if (rs_msg_data(msg) == RS_CTRL_SHUTDOWN) {
+-                                      rs->state &= ~rs_readable;
++                                      if (rs->state & rs_writable) {
++                                              rs->state &= ~rs_readable;
++                                      } else {
++                                              rs->state = rs_disconnected;
++                                              return 0;
++                                      }
+                               }
+                               break;
+                       case RS_OP_WRITE:
+@@ -2948,10 +2954,12 @@ static int rs_poll_events(struct pollfd *rfds, struct pollfd *fds, nfds_t nfds)
  
                rs = idm_lookup(&idm, fds[i].fd);
                if (rs) {
@@ -27,7 +51,7 @@ index d544dd0..e45b26d 100644
                        fds[i].revents = rs_poll_rs(rs, fds[i].events, 1, rs_poll_all);
                } else {
                        fds[i].revents = rfds[i].revents;
-@@ -3098,7 +3100,8 @@ int rselect(int nfds, fd_set *readfds, fd_set *writefds,
+@@ -3098,7 +3106,8 @@ int rselect(int nfds, fd_set *readfds, fd_set *writefds,
  
  /*
   * For graceful disconnect, notify the remote side that we're
@@ -37,15 +61,60 @@ index d544dd0..e45b26d 100644
   */
  int rshutdown(int socket, int how)
  {
-@@ -3138,6 +3141,12 @@ int rshutdown(int socket, int how)
+@@ -3106,10 +3115,10 @@ int rshutdown(int socket, int how)
+       int ctrl, ret = 0;
+       rs = idm_at(&idm, socket);
+-      if (how == SHUT_RD) {
+-              rs->state &= ~rs_readable;
+-              return 0;
+-      }
++//    if (how == SHUT_RD) {
++//            rs->state &= ~rs_readable;
++//            return 0;
++//    }
+       if (rs->fd_flags & O_NONBLOCK)
+               rs_set_nonblocking(rs, 0);
+@@ -3118,15 +3127,20 @@ int rshutdown(int socket, int how)
+               if (how == SHUT_RDWR) {
+                       ctrl = RS_CTRL_DISCONNECT;
+                       rs->state &= ~(rs_readable | rs_writable);
+-              } else {
++              } else if (how == SHUT_WR) {
+                       rs->state &= ~rs_writable;
+                       ctrl = (rs->state & rs_readable) ?
+                               RS_CTRL_SHUTDOWN : RS_CTRL_DISCONNECT;
++              } else {
++                      rs->state &= ~rs_readable;
++                      if (rs->state & rs_writable)
++                              goto out;
++                      ctrl = RS_CTRL_DISCONNECT;
+               }
+               if (!rs->ctrl_avail) {
+                       ret = rs_process_cq(rs, 0, rs_conn_can_send_ctrl);
+                       if (ret)
+-                              return ret;
++                              goto out;
+               }
+               if ((rs->state & rs_connected) && rs->ctrl_avail) {
+@@ -3138,10 +3152,17 @@ int rshutdown(int socket, int how)
        if (rs->state & rs_connected)
                rs_process_cq(rs, 0, rs_conn_all_sends_done);
  
++out:
+       if ((rs->fd_flags & O_NONBLOCK) && (rs->state & rs_connected))
+               rs_set_nonblocking(rs, rs->fd_flags);
+-      return 0;
 +      if (rs->state & rs_disconnected) {
 +              /* Generate event by flushing receives to unblock rpoll */
 +              ibv_req_notify_cq(rs->cm_id->recv_cq, 0);
 +              rdma_disconnect(rs->cm_id);
 +      }
 +
-       if ((rs->fd_flags & O_NONBLOCK) && (rs->state & rs_connected))
-               rs_set_nonblocking(rs, rs->fd_flags);
++      return ret;
+ }
+ static void ds_shutdown(struct rsocket *rs)