aboutsummaryrefslogtreecommitdiffstats
path: root/net/sunrpc
diff options
context:
space:
mode:
authorSteve Dickson <steved@redhat.com>2014-03-20 11:23:03 -0400
committerTrond Myklebust <trond.myklebust@primarydata.com>2014-03-20 11:46:52 -0400
commit1fa3e2eb9db07f30a605c66d1a2fdde4b24e74d5 (patch)
treecdb7eaf7b15855b4028ded86c2b38aa179ef7377 /net/sunrpc
parent9455e3f43b017f560daf4289d0fa295a33976f2a (diff)
SUNRPC: Ensure call_connect_status() deals correctly with SOFTCONN tasks
Don't schedule an rpc_delay before checking to see if the task is a SOFTCONN because the tk_callback from the delay (__rpc_atrun) clears the task status before the rpc_exit_task can be run. Signed-off-by: Steve Dickson <steved@redhat.com> Fixes: 561ec1603171c (SUNRPC: call_connect_status should recheck...) Link: http://lkml.kernel.org/r/5329CF7C.7090308@RedHat.com Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
Diffstat (limited to 'net/sunrpc')
-rw-r--r--net/sunrpc/clnt.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c
index ef96568902c5..62f86793b708 100644
--- a/net/sunrpc/clnt.c
+++ b/net/sunrpc/clnt.c
@@ -1802,10 +1802,10 @@ call_connect_status(struct rpc_task *task)
1802 case -ECONNABORTED: 1802 case -ECONNABORTED:
1803 case -ENETUNREACH: 1803 case -ENETUNREACH:
1804 case -EHOSTUNREACH: 1804 case -EHOSTUNREACH:
1805 /* retry with existing socket, after a delay */
1806 rpc_delay(task, 3*HZ);
1807 if (RPC_IS_SOFTCONN(task)) 1805 if (RPC_IS_SOFTCONN(task))
1808 break; 1806 break;
1807 /* retry with existing socket, after a delay */
1808 rpc_delay(task, 3*HZ);
1809 case -EAGAIN: 1809 case -EAGAIN:
1810 /* Check for timeouts before looping back to call_bind */ 1810 /* Check for timeouts before looping back to call_bind */
1811 case -ETIMEDOUT: 1811 case -ETIMEDOUT: