]> err.no Git - linux-2.6/commitdiff
SUNRPC: Allow rpc_init_task() to initialise the rpc_task->tk_msg
authorTrond Myklebust <Trond.Myklebust@netapp.com>
Thu, 25 Oct 2007 22:32:34 +0000 (18:32 -0400)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Wed, 30 Jan 2008 07:05:31 +0000 (02:05 -0500)
In preparation for the removal of rpc_call_setup().

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
net/sunrpc/clnt.c
net/sunrpc/sched.c

index 7aeffeebf42d44138fd9d048a199020692876860..6eb79c49c937828a14fbba129529d830a7ed1aa3 100644 (file)
@@ -540,13 +540,10 @@ struct rpc_task *rpc_run_task(const struct rpc_task_setup *task_setup_data)
                goto out;
        }
 
-       if (task_setup_data->rpc_message != NULL) {
-               rpc_call_setup(task, task_setup_data->rpc_message, 0);
-               if (task->tk_status != 0) {
-                       ret = ERR_PTR(task->tk_status);
-                       rpc_put_task(task);
-                       goto out;
-               }
+       if (task->tk_status != 0) {
+               ret = ERR_PTR(task->tk_status);
+               rpc_put_task(task);
+               goto out;
        }
        atomic_inc(&task->tk_count);
        /* Mask signals on synchronous RPC calls and RPCSEC_GSS upcalls */
index b9061bcf6fc155cce2eaa2e582b0c7168967f344..fa53a88b2c5bd4afd3a5869aaf4eb647c6776ac4 100644 (file)
@@ -848,6 +848,17 @@ void rpc_init_task(struct rpc_task *task, const struct rpc_task_setup *task_setu
        if (task->tk_ops->rpc_call_prepare != NULL)
                task->tk_action = rpc_prepare_task;
 
+       if (task_setup_data->rpc_message != NULL) {
+               memcpy(&task->tk_msg, task_setup_data->rpc_message, sizeof(task->tk_msg));
+               /* Bind the user cred */
+               if (task->tk_msg.rpc_cred != NULL)
+                       rpcauth_holdcred(task);
+               else
+                       rpcauth_bindcred(task);
+               if (task->tk_action == NULL)
+                       rpc_call_start(task);
+       }
+
        /* starting timestamp */
        task->tk_start = jiffies;