aboutsummaryrefslogtreecommitdiffstats
path: root/net/sunrpc
diff options
context:
space:
mode:
Diffstat (limited to 'net/sunrpc')
-rw-r--r--net/sunrpc/clnt.c11
-rw-r--r--net/sunrpc/xprtsock.c2
2 files changed, 10 insertions, 3 deletions
diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c
index 7bcd931e06e..68a23583f44 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 }
diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c
index 37c5475ba25..ff312f8b018 100644
--- a/net/sunrpc/xprtsock.c
+++ b/net/sunrpc/xprtsock.c
@@ -2033,7 +2033,7 @@ static void xs_connect(struct rpc_task *task)
2033 if (xprt_test_and_set_connecting(xprt)) 2033 if (xprt_test_and_set_connecting(xprt))
2034 return; 2034 return;
2035 2035
2036 if (transport->sock != NULL) { 2036 if (transport->sock != NULL && !RPC_IS_SOFTCONN(task)) {
2037 dprintk("RPC: xs_connect delayed xprt %p for %lu " 2037 dprintk("RPC: xs_connect delayed xprt %p for %lu "
2038 "seconds\n", 2038 "seconds\n",
2039 xprt, xprt->reestablish_timeout / HZ); 2039 xprt, xprt->reestablish_timeout / HZ);