SUNRPC: Ensure that call_bind times out correctly
authorTrond Myklebust <trond.myklebust@primarydata.com>
Mon, 17 Mar 2014 16:57:31 +0000 (12:57 -0400)
committerTrond Myklebust <trond.myklebust@primarydata.com>
Mon, 17 Mar 2014 19:14:18 +0000 (15:14 -0400)
If the rpcbind server is unavailable, we still want the RPC client
to respect the timeout.

Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
net/sunrpc/clnt.c

index 5a1b8fa9ca132548760b3ec88fd11d8ba94b696e..cea1308a6fda78ce1d691570cd3abf3bceaa6ffc 100644 (file)
@@ -1728,9 +1728,7 @@ call_bind_status(struct rpc_task *task)
        case -EPROTONOSUPPORT:
                dprintk("RPC: %5u remote rpcbind version unavailable, retrying\n",
                                task->tk_pid);
-               task->tk_status = 0;
-               task->tk_action = call_bind;
-               return;
+               goto retry_timeout;
        case -ECONNREFUSED:             /* connection problems */
        case -ECONNRESET:
        case -ECONNABORTED:
@@ -1756,6 +1754,7 @@ call_bind_status(struct rpc_task *task)
        return;
 
 retry_timeout:
+       task->tk_status = 0;
        task->tk_action = call_timeout;
 }