summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy Grover <andy.grover@oracle.com>2010-03-04 06:25:21 +0300
committerAndy Grover <andy.grover@oracle.com>2010-09-09 05:12:09 +0400
commite32b4a70495aac6a612e13f4c21db09dd756ff2c (patch)
tree2f0a7187e5ddb8a79d5bec0cefade198b99ea138
parentff3d7d36134ef7138803734fdbf91cc986ea7976 (diff)
downloadlinux-e32b4a70495aac6a612e13f4c21db09dd756ff2c.tar.xz
RDS/IB: Do not wait for send ring to be empty on conn shutdown
Now that we are signaling send completions much less, we are likely to have dirty entries in the send queue when the connection is shut down (on rmmod, for example.) These are cleaned up a little further down in conn_shutdown, but if we wait on the ring_empty_wait for them, it'll never happen, and we hand on unload. Signed-off-by: Andy Grover <andy.grover@oracle.com>
-rw-r--r--net/rds/ib_cm.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/net/rds/ib_cm.c b/net/rds/ib_cm.c
index b5b5ebbc0bb6..1a91af75f4c7 100644
--- a/net/rds/ib_cm.c
+++ b/net/rds/ib_cm.c
@@ -620,8 +620,11 @@ void rds_ib_conn_shutdown(struct rds_connection *conn)
ic->i_cm_id, err);
}
+ /*
+ * Don't wait for the send ring to be empty -- there may be completed
+ * non-signaled entries sitting on there. We unmap these below.
+ */
wait_event(rds_ib_ring_empty_wait,
- rds_ib_ring_empty(&ic->i_send_ring) &&
rds_ib_ring_empty(&ic->i_recv_ring));
if (ic->i_send_hdrs)