aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/sunrpc/clnt.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c
index 8945307556ec..9503b4c177d2 100644
--- a/net/sunrpc/clnt.c
+++ b/net/sunrpc/clnt.c
@@ -890,7 +890,6 @@ call_encode(struct rpc_task *task)
890 task->tk_msg.rpc_argp); 890 task->tk_msg.rpc_argp);
891 if (task->tk_status == -ENOMEM) { 891 if (task->tk_status == -ENOMEM) {
892 /* XXX: Is this sane? */ 892 /* XXX: Is this sane? */
893 rpc_delay(task, 3*HZ);
894 task->tk_status = -EAGAIN; 893 task->tk_status = -EAGAIN;
895 } 894 }
896} 895}
@@ -1048,8 +1047,14 @@ call_transmit(struct rpc_task *task)
1048 BUG_ON(task->tk_rqstp->rq_bytes_sent != 0); 1047 BUG_ON(task->tk_rqstp->rq_bytes_sent != 0);
1049 call_encode(task); 1048 call_encode(task);
1050 /* Did the encode result in an error condition? */ 1049 /* Did the encode result in an error condition? */
1051 if (task->tk_status != 0) 1050 if (task->tk_status != 0) {
1051 /* Was the error nonfatal? */
1052 if (task->tk_status == -EAGAIN)
1053 rpc_delay(task, HZ >> 4);
1054 else
1055 rpc_exit(task, task->tk_status);
1052 return; 1056 return;
1057 }
1053 } 1058 }
1054 xprt_transmit(task); 1059 xprt_transmit(task);
1055 if (task->tk_status < 0) 1060 if (task->tk_status < 0)