[pnfs] [PATCH] nfs41: setup sequence for get_lease_time on rpc_call_validate_args
Benny Halevy
bhalevy at panasas.com
Tue Mar 18 14:26:34 EDT 2008
setup_sequence should be called from the rpc_call_validate_args,
not from rpc_call_prepare.
Also, use nfs4_setup_sequence rather than nfs41_setup_sequence
to go through session recovery if needed.
Signed-off-by: Benny Halevy <bhalevy at panasas.com>
---
fs/nfs/nfs4proc.c | 18 ++++++++++++------
1 files changed, 12 insertions(+), 6 deletions(-)
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index 342ac8f..a687e77 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -4473,18 +4473,20 @@ struct nfs4_get_lease_time_data {
struct nfs4_session *session;
};
-static void nfs4_get_lease_time_prepare(struct rpc_task *task,
+static int nfs4_get_lease_time_validate(struct rpc_task *task,
void *calldata)
{
int ret;
struct nfs4_get_lease_time_data *data =
(struct nfs4_get_lease_time_data *)calldata;
- ret = nfs41_setup_sequence(data->session,
- &data->args->la_seq_args,
- &data->res->lr_seq_res, 0, task);
+ dprintk("--> %s\n", __func__);
+ ret = nfs4_setup_sequence(data->clp, data->session,
+ &data->args->la_seq_args,
+ &data->res->lr_seq_res, 0, task);
+ dprintk("<-- %s return %d\n", __func__, ret);
- BUG_ON(ret == -EAGAIN);
+ return ret;
}
static void nfs4_get_lease_time_done(struct rpc_task *task,
@@ -4493,12 +4495,14 @@ static void nfs4_get_lease_time_done(struct rpc_task *task,
struct nfs4_get_lease_time_data *data =
(struct nfs4_get_lease_time_data *)calldata;
+ dprintk("--> %s\n", __func__);
nfs41_sequence_done(data->clp, data->session,
&data->res->lr_seq_res, task->tk_status);
+ dprintk("<-- %s\n", __func__);
}
struct rpc_call_ops nfs4_get_lease_time_ops = {
- .rpc_call_prepare = nfs4_get_lease_time_prepare,
+ .rpc_call_validate_args = nfs4_get_lease_time_validate,
.rpc_call_done = nfs4_get_lease_time_done,
};
@@ -4529,6 +4533,7 @@ int nfs4_proc_get_lease_time(struct nfs_client *clp,
};
int status;
+ dprintk("--> %s\n", __func__);
task = rpc_run_task(&task_setup);
if (IS_ERR(task))
@@ -4537,6 +4542,7 @@ int nfs4_proc_get_lease_time(struct nfs_client *clp,
status = task->tk_status;
rpc_put_task(task);
}
+ dprintk("<-- %s return %d\n", __func__, status);
return status;
}
--
1.5.3.3
More information about the pNFS
mailing list