Commit 48c05854 authored by Anna Schumaker's avatar Anna Schumaker
Browse files

NFS: Add an nfs4_call_sync_custom() function



There are a few cases where we need to manually configure the
rpc_task_setup structure to get the behavior we want.

Signed-off-by: default avatarAnna Schumaker <Anna.Schumaker@Netapp.com>
parent 1e672e36
Loading
Loading
Loading
Loading
+15 −10
Original line number Diff line number Diff line
@@ -1073,14 +1073,26 @@ static const struct rpc_call_ops nfs40_call_sync_ops = {
	.rpc_call_done = nfs40_call_sync_done,
};

static int nfs4_call_sync_custom(struct rpc_task_setup *task_setup)
{
	int ret;
	struct rpc_task *task;

	task = rpc_run_task(task_setup);
	if (IS_ERR(task))
		return PTR_ERR(task);

	ret = task->tk_status;
	rpc_put_task(task);
	return ret;
}

static int nfs4_call_sync_sequence(struct rpc_clnt *clnt,
				   struct nfs_server *server,
				   struct rpc_message *msg,
				   struct nfs4_sequence_args *args,
				   struct nfs4_sequence_res *res)
{
	int ret;
	struct rpc_task *task;
	struct nfs_client *clp = server->nfs_client;
	struct nfs4_call_sync_data data = {
		.seq_server = server,
@@ -1094,14 +1106,7 @@ static int nfs4_call_sync_sequence(struct rpc_clnt *clnt,
		.callback_data = &data
	};

	task = rpc_run_task(&task_setup);
	if (IS_ERR(task))
		ret = PTR_ERR(task);
	else {
		ret = task->tk_status;
		rpc_put_task(task);
	}
	return ret;
	return nfs4_call_sync_custom(&task_setup);
}

int nfs4_call_sync(struct rpc_clnt *clnt,