Skip to contentSkip to conversation

NFS/RDMA client stall patches

PATCH Peter Leckie 1 participant 1 message May 19, 2008

Subsystems (3)
lore
Share & tools
lore

Peter Leckie

author Reviewed-by Greg Banks
#0 lore raw

This patch changes rpcrdma_conn_func() to directly call xprt_disconnect() instead of directly waking the pending task queue. It's also changes to more closely match the
tcp equivalent function.

X-Sgi-Pv: 970244
<http://bugworks/query.cgi/970244>---

net/sunrpc/xprtrdma/rpc_rdma.c +0 -0
Index: linux-2.6.25.3/net/sunrpc/xprtrdma/rpc_rdma.c
===================================================================
@@ -680,15 +680,13 @@ rpcrdma_conn_func(struct rpcrdma_ep *ep)
{
       struct rpc_xprt *xprt = ep->rep_xprt;
-       spin_lock_bh(&xprt->transport_lock);
       if (ep->rep_connected > 0) {
+               spin_lock_bh(&xprt->transport_lock);
               if (!xprt_test_and_set_connected(xprt))
                       xprt_wake_pending_tasks(xprt, 0);

- } else {
- if (xprt_test_and_clear_connected(xprt))
- xprt_wake_pending_tasks(xprt, ep->rep_connected);
- }
- spin_unlock_bh(&xprt->transport_lock);
+ spin_unlock_bh(&xprt->transport_lock);
+ } else
+ xprt_disconnect(xprt);
}

/*