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>
This commit is contained in:
J. Bruce Fields 2005-10-13 16:54:48 -04:00 committed by Trond Myklebust
parent ead5e1c26f
commit f3680312a7
1 changed files with 10 additions and 3 deletions

View File

@ -710,9 +710,16 @@ call_encode(struct rpc_task *task)
rpc_exit(task, -EIO);
return;
}
if (encode != NULL)
task->tk_status = rpcauth_wrap_req(task, encode, req, p,
task->tk_msg.rpc_argp);
if (encode == NULL)
return;
task->tk_status = rpcauth_wrap_req(task, encode, req, p,
task->tk_msg.rpc_argp);
if (task->tk_status == -ENOMEM) {
/* XXX: Is this sane? */
rpc_delay(task, 3*HZ);
task->tk_status = -EAGAIN;
}
}
/*