summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTrond Myklebust <Trond.Myklebust@netapp.com>2006-01-03 11:55:10 +0300
committerTrond Myklebust <Trond.Myklebust@netapp.com>2006-01-06 22:58:42 +0300
commite60859ac0e50f660d23b72e42e05f58757dcfeff (patch)
treea48b07cea18971545bd6670f66f8b8341d393cbc
parent89991c24e48b76f40aa3bd8c40c1e87c75d10a33 (diff)
downloadlinux-e60859ac0e50f660d23b72e42e05f58757dcfeff.tar.xz
SUNRPC: rpc_execute should not return task->tk_status;
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
-rw-r--r--net/sunrpc/clnt.c11
-rw-r--r--net/sunrpc/sched.c4
2 files changed, 7 insertions, 8 deletions
diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c
index 8b2f75bc006d..f025b7e72353 100644
--- a/net/sunrpc/clnt.c
+++ b/net/sunrpc/clnt.c
@@ -446,14 +446,15 @@ int rpc_call_sync(struct rpc_clnt *clnt, struct rpc_message *msg, int flags)
rpc_call_setup(task, msg, 0);
/* Set up the call info struct and execute the task */
- if (task->tk_status == 0) {
+ status = task->tk_status;
+ if (status == 0) {
+ atomic_inc(&task->tk_count);
status = rpc_execute(task);
- } else {
- status = task->tk_status;
- rpc_release_task(task);
+ if (status == 0)
+ status = task->tk_status;
}
-
rpc_restore_sigmask(&oldset);
+ rpc_release_task(task);
out:
return status;
}
diff --git a/net/sunrpc/sched.c b/net/sunrpc/sched.c
index 82d158dad16d..48510e3ffa02 100644
--- a/net/sunrpc/sched.c
+++ b/net/sunrpc/sched.c
@@ -694,9 +694,7 @@ static int __rpc_execute(struct rpc_task *task)
dprintk("RPC: %4d sync task resuming\n", task->tk_pid);
}
- dprintk("RPC: %4d exit() = %d\n", task->tk_pid, task->tk_status);
- status = task->tk_status;
-
+ dprintk("RPC: %4d, return %d, status %d\n", task->tk_pid, status, task->tk_status);
/* Wake up anyone who is waiting for task completion */
rpc_mark_complete_task(task);
/* Release all resources associated with the task */