aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
Diffstat (limited to 'net')
-rw-r--r--net/sunrpc/clnt.c36
-rw-r--r--net/sunrpc/rpcb_clnt.c8
2 files changed, 16 insertions, 28 deletions
diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c
index 7c80abd9263f..9aad45946d32 100644
--- a/net/sunrpc/clnt.c
+++ b/net/sunrpc/clnt.c
@@ -523,8 +523,11 @@ void rpc_clnt_sigunmask(struct rpc_clnt *clnt, sigset_t *oldset)
523} 523}
524EXPORT_SYMBOL_GPL(rpc_clnt_sigunmask); 524EXPORT_SYMBOL_GPL(rpc_clnt_sigunmask);
525 525
526static 526/**
527struct rpc_task *rpc_do_run_task(const struct rpc_task_setup *task_setup_data) 527 * rpc_run_task - Allocate a new RPC task, then run rpc_execute against it
528 * @task_setup_data: pointer to task initialisation data
529 */
530struct rpc_task *rpc_run_task(const struct rpc_task_setup *task_setup_data)
528{ 531{
529 struct rpc_task *task, *ret; 532 struct rpc_task *task, *ret;
530 sigset_t oldset; 533 sigset_t oldset;
@@ -553,6 +556,7 @@ out:
553 rpc_restore_sigmask(&oldset); 556 rpc_restore_sigmask(&oldset);
554 return ret; 557 return ret;
555} 558}
559EXPORT_SYMBOL_GPL(rpc_run_task);
556 560
557/** 561/**
558 * rpc_call_sync - Perform a synchronous RPC call 562 * rpc_call_sync - Perform a synchronous RPC call
@@ -573,7 +577,7 @@ int rpc_call_sync(struct rpc_clnt *clnt, struct rpc_message *msg, int flags)
573 577
574 BUG_ON(flags & RPC_TASK_ASYNC); 578 BUG_ON(flags & RPC_TASK_ASYNC);
575 579
576 task = rpc_do_run_task(&task_setup_data); 580 task = rpc_run_task(&task_setup_data);
577 if (IS_ERR(task)) 581 if (IS_ERR(task))
578 return PTR_ERR(task); 582 return PTR_ERR(task);
579 status = task->tk_status; 583 status = task->tk_status;
@@ -603,7 +607,7 @@ rpc_call_async(struct rpc_clnt *clnt, struct rpc_message *msg, int flags,
603 .flags = flags|RPC_TASK_ASYNC, 607 .flags = flags|RPC_TASK_ASYNC,
604 }; 608 };
605 609
606 task = rpc_do_run_task(&task_setup_data); 610 task = rpc_run_task(&task_setup_data);
607 if (IS_ERR(task)) 611 if (IS_ERR(task))
608 return PTR_ERR(task); 612 return PTR_ERR(task);
609 rpc_put_task(task); 613 rpc_put_task(task);
@@ -611,28 +615,6 @@ rpc_call_async(struct rpc_clnt *clnt, struct rpc_message *msg, int flags,
611} 615}
612EXPORT_SYMBOL_GPL(rpc_call_async); 616EXPORT_SYMBOL_GPL(rpc_call_async);
613 617
614/**
615 * rpc_run_task - Allocate a new RPC task, then run rpc_execute against it
616 * @clnt: pointer to RPC client
617 * @flags: RPC flags
618 * @ops: RPC call ops
619 * @data: user call data
620 */
621struct rpc_task *rpc_run_task(struct rpc_clnt *clnt, int flags,
622 const struct rpc_call_ops *tk_ops,
623 void *data)
624{
625 struct rpc_task_setup task_setup_data = {
626 .rpc_client = clnt,
627 .callback_ops = tk_ops,
628 .callback_data = data,
629 .flags = flags,
630 };
631
632 return rpc_do_run_task(&task_setup_data);
633}
634EXPORT_SYMBOL_GPL(rpc_run_task);
635
636void 618void
637rpc_call_setup(struct rpc_task *task, const struct rpc_message *msg, int flags) 619rpc_call_setup(struct rpc_task *task, const struct rpc_message *msg, int flags)
638{ 620{
@@ -1550,7 +1532,7 @@ struct rpc_task *rpc_call_null(struct rpc_clnt *clnt, struct rpc_cred *cred, int
1550 .callback_ops = &rpc_default_ops, 1532 .callback_ops = &rpc_default_ops,
1551 .flags = flags, 1533 .flags = flags,
1552 }; 1534 };
1553 return rpc_do_run_task(&task_setup_data); 1535 return rpc_run_task(&task_setup_data);
1554} 1536}
1555EXPORT_SYMBOL_GPL(rpc_call_null); 1537EXPORT_SYMBOL_GPL(rpc_call_null);
1556 1538
diff --git a/net/sunrpc/rpcb_clnt.c b/net/sunrpc/rpcb_clnt.c
index a05493aedb68..7c362e5f6e1b 100644
--- a/net/sunrpc/rpcb_clnt.c
+++ b/net/sunrpc/rpcb_clnt.c
@@ -310,6 +310,10 @@ void rpcb_getport_async(struct rpc_task *task)
310 struct rpc_clnt *rpcb_clnt; 310 struct rpc_clnt *rpcb_clnt;
311 static struct rpcbind_args *map; 311 static struct rpcbind_args *map;
312 struct rpc_task *child; 312 struct rpc_task *child;
313 struct rpc_task_setup task_setup_data = {
314 .callback_ops = &rpcb_getport_ops,
315 .flags = RPC_TASK_ASYNC,
316 };
313 struct sockaddr addr; 317 struct sockaddr addr;
314 int status; 318 int status;
315 struct rpcb_info *info; 319 struct rpcb_info *info;
@@ -395,7 +399,9 @@ void rpcb_getport_async(struct rpc_task *task)
395 sizeof(map->r_addr)); 399 sizeof(map->r_addr));
396 map->r_owner = RPCB_OWNER_STRING; /* ignored for GETADDR */ 400 map->r_owner = RPCB_OWNER_STRING; /* ignored for GETADDR */
397 401
398 child = rpc_run_task(rpcb_clnt, RPC_TASK_ASYNC, &rpcb_getport_ops, map); 402 task_setup_data.rpc_client = rpcb_clnt;
403 task_setup_data.callback_data = map;
404 child = rpc_run_task(&task_setup_data);
399 rpc_release_client(rpcb_clnt); 405 rpc_release_client(rpcb_clnt);
400 if (IS_ERR(child)) { 406 if (IS_ERR(child)) {
401 status = -EIO; 407 status = -EIO;