aboutsummaryrefslogtreecommitdiffstats
path: root/net/sunrpc/clnt.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/sunrpc/clnt.c')
-rw-r--r--net/sunrpc/clnt.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c
index 7bcd931e06ee..68a23583f44c 100644
--- a/net/sunrpc/clnt.c
+++ b/net/sunrpc/clnt.c
@@ -1197,6 +1197,8 @@ call_transmit_status(struct rpc_task *task)
1197 default: 1197 default:
1198 dprint_status(task); 1198 dprint_status(task);
1199 xprt_end_transmit(task); 1199 xprt_end_transmit(task);
1200 rpc_task_force_reencode(task);
1201 break;
1200 /* 1202 /*
1201 * Special cases: if we've been waiting on the 1203 * Special cases: if we've been waiting on the
1202 * socket's write_space() callback, or if the 1204 * socket's write_space() callback, or if the
@@ -1204,11 +1206,16 @@ call_transmit_status(struct rpc_task *task)
1204 * then hold onto the transport lock. 1206 * then hold onto the transport lock.
1205 */ 1207 */
1206 case -ECONNREFUSED: 1208 case -ECONNREFUSED:
1207 case -ECONNRESET:
1208 case -ENOTCONN:
1209 case -EHOSTDOWN: 1209 case -EHOSTDOWN:
1210 case -EHOSTUNREACH: 1210 case -EHOSTUNREACH:
1211 case -ENETUNREACH: 1211 case -ENETUNREACH:
1212 if (RPC_IS_SOFTCONN(task)) {
1213 xprt_end_transmit(task);
1214 rpc_exit(task, task->tk_status);
1215 break;
1216 }
1217 case -ECONNRESET:
1218 case -ENOTCONN:
1212 case -EPIPE: 1219 case -EPIPE:
1213 rpc_task_force_reencode(task); 1220 rpc_task_force_reencode(task);
1214 } 1221 }