/* rpc_call_async - Perform an asynchronous RPC call @clnt: pointer to RPC client @msg: RPC call parameters @flags: RPC call flags @tk_ops: RPC call ops @data: user call data  */
int rpc_call_async(struct rpc_clnt *clnt, const struct rpc_message *msg, int flags, const struct rpc_call_ops *tk_ops, void *data)
/* rpc_call_async - Perform an asynchronous RPC call @clnt: pointer to RPC client @msg: RPC call parameters @flags: RPC call flags @tk_ops: RPC call ops @data: user call data  */
int rpc_call_async(struct rpc_clnt *clnt, const 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_run_task(&task_setup_data);
	if (IS_ERR(task))
		return PTR_ERR(task);
	rpc_put_task(task);
	return 0;
}