summaryrefslogtreecommitdiff
path: root/net/sunrpc
diff options
context:
space:
mode:
authorTrond Myklebust <trond.myklebust@primarydata.com>2017-08-20 13:04:12 -0400
committerTrond Myklebust <trond.myklebust@primarydata.com>2017-08-20 13:04:12 -0400
commit7af7a5963c40d8ed853d1004701c73a221d94644 (patch)
tree23b5f9454fc911929af783887e56d433995e7344 /net/sunrpc
parentb7561e51868c929c40b26e45e8e63a6aa5aa211f (diff)
parent53a75f22e78a601321c2e1fd16266ecdae2f2309 (diff)
Merge branch 'bugfixes'
Diffstat (limited to 'net/sunrpc')
-rw-r--r--net/sunrpc/clnt.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c
index 2e49d1f892b7..69a9e5953744 100644
--- a/net/sunrpc/clnt.c
+++ b/net/sunrpc/clnt.c
@@ -1903,6 +1903,14 @@ call_connect_status(struct rpc_task *task)
task->tk_status = 0;
switch (status) {
case -ECONNREFUSED:
+ /* A positive refusal suggests a rebind is needed. */
+ if (RPC_IS_SOFTCONN(task))
+ break;
+ if (clnt->cl_autobind) {
+ rpc_force_rebind(clnt);
+ task->tk_action = call_bind;
+ return;
+ }
case -ECONNRESET:
case -ECONNABORTED:
case -ENETUNREACH: