diff options
-rw-r--r-- | net/sunrpc/clnt.c | 9 |
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) |