From d08aa7350183028278dbe18a331cedc011e77915 Mon Sep 17 00:00:00 2001 From: Vladimir Sokolovsky Date: Wed, 20 Nov 2013 13:26:57 +0200 Subject: [PATCH] Fixed nfsrdma compilation issue on RHEL6.4 errata kernel http://bugs.openfabrics.org/bugzilla/show_bug.cgi?id=2453 issue: 2453 Signed-off-by: Vladimir Sokolovsky --- ...f-the-redundant-xprt-shutdown-bit-fi.patch | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 linux-next-cherry-picks/0013-SUNRPC-Get-rid-of-the-redundant-xprt-shutdown-bit-fi.patch diff --git a/linux-next-cherry-picks/0013-SUNRPC-Get-rid-of-the-redundant-xprt-shutdown-bit-fi.patch b/linux-next-cherry-picks/0013-SUNRPC-Get-rid-of-the-redundant-xprt-shutdown-bit-fi.patch new file mode 100644 index 0000000..0b33ee2 --- /dev/null +++ b/linux-next-cherry-picks/0013-SUNRPC-Get-rid-of-the-redundant-xprt-shutdown-bit-fi.patch @@ -0,0 +1,49 @@ +From: Trond Myklebust +Subject: [PATCH] SUNRPC: Get rid of the redundant xprt->shutdown bit field + +It is only set after everyone has dereferenced the transport, +and serves no useful purpose: setting it is racy, so all the +socket code, etc still needs to be able to cope with the cases +where they miss reading it. + +Signed-off-by: Trond Myklebust +--- + net/sunrpc/xprtrdma/transport.c | 21 ++++++++------------- + 1 files changed, 8 insertions(+), 13 deletions(-) + +diff --git a/net/sunrpc/xprtrdma/transport.c b/net/sunrpc/xprtrdma/transport.c +index xxxxxxx..xxxxxxx xxxxxx +--- a/net/sunrpc/xprtrdma/transport.c ++++ b/net/sunrpc/xprtrdma/transport.c +@@ -199,23 +199,18 @@ xprt_rdma_connect_worker(struct work_struct *work) + struct rpc_xprt *xprt = &r_xprt->xprt; + int rc = 0; + +- if (!xprt->shutdown) { +- xprt_clear_connected(xprt); +- +- dprintk("RPC: %s: %sconnect\n", __func__, +- r_xprt->rx_ep.rep_connected != 0 ? "re" : ""); +- rc = rpcrdma_ep_connect(&r_xprt->rx_ep, &r_xprt->rx_ia); +- if (rc) +- goto out; +- } +- goto out_clear; ++ current->flags |= PF_FSTRANS; ++ xprt_clear_connected(xprt); + +-out: +- xprt_wake_pending_tasks(xprt, rc); ++ dprintk("RPC: %s: %sconnect\n", __func__, ++ r_xprt->rx_ep.rep_connected != 0 ? "re" : ""); ++ rc = rpcrdma_ep_connect(&r_xprt->rx_ep, &r_xprt->rx_ia); ++ if (rc) ++ xprt_wake_pending_tasks(xprt, rc); + +-out_clear: + dprintk("RPC: %s: exit\n", __func__); + xprt_clear_connecting(xprt); ++ current->flags &= ~PF_FSTRANS; + } + + /* -- 2.46.0