diff options
author | Trond Myklebust <Trond.Myklebust@netapp.com> | 2007-07-14 23:39:59 +0400 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2008-01-30 10:05:30 +0300 |
commit | 84115e1cd4a3614c4e566d4cce31381dce3dbef9 (patch) | |
tree | 01b2de7163deb6b3a789811183d8b8c1329b900c /net/sunrpc/clnt.c | |
parent | e8914c65f7f8d4e8701b8e78a12b714872ea0402 (diff) | |
download | linux-84115e1cd4a3614c4e566d4cce31381dce3dbef9.tar.xz |
SUNRPC: Cleanup of rpc_task initialisation
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'net/sunrpc/clnt.c')
-rw-r--r-- | net/sunrpc/clnt.c | 51 |
1 files changed, 37 insertions, 14 deletions
diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c index 22092b91dd85..7c80abd9263f 100644 --- a/net/sunrpc/clnt.c +++ b/net/sunrpc/clnt.c @@ -524,25 +524,22 @@ void rpc_clnt_sigunmask(struct rpc_clnt *clnt, sigset_t *oldset) EXPORT_SYMBOL_GPL(rpc_clnt_sigunmask); static -struct rpc_task *rpc_do_run_task(struct rpc_clnt *clnt, - struct rpc_message *msg, - int flags, - const struct rpc_call_ops *ops, - void *data) +struct rpc_task *rpc_do_run_task(const struct rpc_task_setup *task_setup_data) { struct rpc_task *task, *ret; sigset_t oldset; - task = rpc_new_task(clnt, flags, ops, data); + task = rpc_new_task(task_setup_data); if (task == NULL) { - rpc_release_calldata(ops, data); + rpc_release_calldata(task_setup_data->callback_ops, + task_setup_data->callback_data); return ERR_PTR(-ENOMEM); } /* Mask signals on synchronous RPC calls and RPCSEC_GSS upcalls */ rpc_task_sigmask(task, &oldset); - if (msg != NULL) { - rpc_call_setup(task, msg, 0); + 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); @@ -566,11 +563,17 @@ out: int rpc_call_sync(struct rpc_clnt *clnt, struct rpc_message *msg, int flags) { struct rpc_task *task; + struct rpc_task_setup task_setup_data = { + .rpc_client = clnt, + .rpc_message = msg, + .callback_ops = &rpc_default_ops, + .flags = flags, + }; int status; BUG_ON(flags & RPC_TASK_ASYNC); - task = rpc_do_run_task(clnt, msg, flags, &rpc_default_ops, NULL); + task = rpc_do_run_task(&task_setup_data); if (IS_ERR(task)) return PTR_ERR(task); status = task->tk_status; @@ -592,8 +595,15 @@ rpc_call_async(struct rpc_clnt *clnt, struct rpc_message *msg, int flags, const struct rpc_call_ops *tk_ops, void *data) { struct rpc_task *task; + struct rpc_task_setup task_setup_data = { + .rpc_client = clnt, + .rpc_message = msg, + .callback_ops = tk_ops, + .callback_data = data, + .flags = flags|RPC_TASK_ASYNC, + }; - task = rpc_do_run_task(clnt, msg, flags|RPC_TASK_ASYNC, tk_ops, data); + task = rpc_do_run_task(&task_setup_data); if (IS_ERR(task)) return PTR_ERR(task); rpc_put_task(task); @@ -612,12 +622,19 @@ struct rpc_task *rpc_run_task(struct rpc_clnt *clnt, int flags, const struct rpc_call_ops *tk_ops, void *data) { - return rpc_do_run_task(clnt, NULL, flags, tk_ops, data); + struct rpc_task_setup task_setup_data = { + .rpc_client = clnt, + .callback_ops = tk_ops, + .callback_data = data, + .flags = flags, + }; + + return rpc_do_run_task(&task_setup_data); } EXPORT_SYMBOL_GPL(rpc_run_task); void -rpc_call_setup(struct rpc_task *task, struct rpc_message *msg, int flags) +rpc_call_setup(struct rpc_task *task, const struct rpc_message *msg, int flags) { task->tk_msg = *msg; task->tk_flags |= flags; @@ -1527,7 +1544,13 @@ struct rpc_task *rpc_call_null(struct rpc_clnt *clnt, struct rpc_cred *cred, int .rpc_proc = &rpcproc_null, .rpc_cred = cred, }; - return rpc_do_run_task(clnt, &msg, flags, &rpc_default_ops, NULL); + struct rpc_task_setup task_setup_data = { + .rpc_client = clnt, + .rpc_message = &msg, + .callback_ops = &rpc_default_ops, + .flags = flags, + }; + return rpc_do_run_task(&task_setup_data); } EXPORT_SYMBOL_GPL(rpc_call_null); |