aboutsummaryrefslogtreecommitdiffstats
path: root/net/sunrpc/clnt.c
diff options
context:
space:
mode:
authorJ. Bruce Fields <bfields@fieldses.org>2005-10-13 16:54:48 -0400
committerTrond Myklebust <Trond.Myklebust@netapp.com>2005-10-19 02:19:43 -0400
commitf3680312a737355ddf35c1b68af25e384d7ef0a8 (patch)
tree6b447f0a58bf1c1acfa8b1731ef06580d275b983 /net/sunrpc/clnt.c
parentead5e1c26fdcd969cf40c49cb0589d56879d240d (diff)
SUNRPC: Retry wrap in case of memory allocation failure.
For privacy we need to allocate extra pages to hold encrypted page data when wrapping requests. This allocation may fail, and we handle that case by waiting and retrying. Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'net/sunrpc/clnt.c')
-rw-r--r--net/sunrpc/clnt.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c
index 534274056329..702ede309b06 100644
--- a/net/sunrpc/clnt.c
+++ b/net/sunrpc/clnt.c
@@ -710,9 +710,16 @@ call_encode(struct rpc_task *task)
710 rpc_exit(task, -EIO); 710 rpc_exit(task, -EIO);
711 return; 711 return;
712 } 712 }
713 if (encode != NULL) 713 if (encode == NULL)
714 task->tk_status = rpcauth_wrap_req(task, encode, req, p, 714 return;
715 task->tk_msg.rpc_argp); 715
716 task->tk_status = rpcauth_wrap_req(task, encode, req, p,
717 task->tk_msg.rpc_argp);
718 if (task->tk_status == -ENOMEM) {
719 /* XXX: Is this sane? */
720 rpc_delay(task, 3*HZ);
721 task->tk_status = -EAGAIN;
722 }
716} 723}
717 724
718/* 725/*