NFS/RDMA client stall patches
Subsystems (3)
Peter Leckie
Reviewed-by Greg BanksThis 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
@@ -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);
}
/*