From 40c789d18281f4ce95465500ea100104ea1ffd6e Mon Sep 17 00:00:00 2001 From: Trond Myklebust Date: Sat, 19 May 2012 12:12:53 -0400 Subject: [PATCH] --- yaml --- r: 308634 b: refs/heads/master c: 1afeaf5c29aa07db25760d2fbed5c08a3aec3498 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/net/sunrpc/clnt.c | 2 ++ trunk/net/sunrpc/xprt.c | 5 +++-- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index aac128569738..21176684f298 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 6b34309936ed5c85cbe5868655814065f42c2f38 +refs/heads/master: 1afeaf5c29aa07db25760d2fbed5c08a3aec3498 diff --git a/trunk/net/sunrpc/clnt.c b/trunk/net/sunrpc/clnt.c index adf2990acebf..25302c802460 100644 --- a/trunk/net/sunrpc/clnt.c +++ b/trunk/net/sunrpc/clnt.c @@ -1288,6 +1288,8 @@ call_reserveresult(struct rpc_task *task) } switch (status) { + case -ENOMEM: + rpc_delay(task, HZ >> 2); case -EAGAIN: /* woken up; retry */ task->tk_action = call_reserve; return; diff --git a/trunk/net/sunrpc/xprt.c b/trunk/net/sunrpc/xprt.c index b239e75c483f..d7ccd7923eab 100644 --- a/trunk/net/sunrpc/xprt.c +++ b/trunk/net/sunrpc/xprt.c @@ -984,15 +984,16 @@ static void xprt_alloc_slot(struct rpc_task *task) goto out_init_req; switch (PTR_ERR(req)) { case -ENOMEM: - rpc_delay(task, HZ >> 2); dprintk("RPC: dynamic allocation of request slot " "failed! Retrying\n"); + task->tk_status = -ENOMEM; break; case -EAGAIN: rpc_sleep_on(&xprt->backlog, task, NULL); dprintk("RPC: waiting for request slot\n"); + default: + task->tk_status = -EAGAIN; } - task->tk_status = -EAGAIN; return; out_init_req: task->tk_status = 0;