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.
Signed-off-by: Peter Leckie <pleckie@xxxxxxxxxxxxxxxxx>
Reviewed-by: Greg Banks <gnb@xxxxxxxxxxxxxxxxx>
X-Sgi-Pv: 970244
<http://bugworks/query.cgi/970244>---
Index: linux-2.6.25.3/net/sunrpc/xprtrdma/rpc_rdma.c
===================================================================
--- linux-2.6.25.3.orig/net/sunrpc/xprtrdma/rpc_rdma.c
+++ 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);
}
/*
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html