diff options
Diffstat (limited to 'net/sunrpc/clnt.c')
-rw-r--r-- | net/sunrpc/clnt.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c index 07e9b05321e6..145715b53115 100644 --- a/net/sunrpc/clnt.c +++ b/net/sunrpc/clnt.c | |||
@@ -1117,10 +1117,12 @@ call_transmit_status(struct rpc_task *task) | |||
1117 | * then hold onto the transport lock. | 1117 | * then hold onto the transport lock. |
1118 | */ | 1118 | */ |
1119 | case -ECONNREFUSED: | 1119 | case -ECONNREFUSED: |
1120 | case -ECONNRESET: | ||
1120 | case -ENOTCONN: | 1121 | case -ENOTCONN: |
1121 | case -EHOSTDOWN: | 1122 | case -EHOSTDOWN: |
1122 | case -EHOSTUNREACH: | 1123 | case -EHOSTUNREACH: |
1123 | case -ENETUNREACH: | 1124 | case -ENETUNREACH: |
1125 | case -EPIPE: | ||
1124 | rpc_task_force_reencode(task); | 1126 | rpc_task_force_reencode(task); |
1125 | } | 1127 | } |
1126 | } | 1128 | } |
@@ -1162,9 +1164,12 @@ call_status(struct rpc_task *task) | |||
1162 | xprt_conditional_disconnect(task->tk_xprt, | 1164 | xprt_conditional_disconnect(task->tk_xprt, |
1163 | req->rq_connect_cookie); | 1165 | req->rq_connect_cookie); |
1164 | break; | 1166 | break; |
1167 | case -ECONNRESET: | ||
1165 | case -ECONNREFUSED: | 1168 | case -ECONNREFUSED: |
1166 | case -ENOTCONN: | ||
1167 | rpc_force_rebind(clnt); | 1169 | rpc_force_rebind(clnt); |
1170 | rpc_delay(task, 3*HZ); | ||
1171 | case -EPIPE: | ||
1172 | case -ENOTCONN: | ||
1168 | task->tk_action = call_bind; | 1173 | task->tk_action = call_bind; |
1169 | break; | 1174 | break; |
1170 | case -EAGAIN: | 1175 | case -EAGAIN: |