aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorAndy Adamson <andros@netapp.com>2009-04-01 09:22:21 -0400
committerBenny Halevy <bhalevy@panasas.com>2009-06-17 13:46:44 -0400
commitd898528cdb338b145c71049c3cb7b1dfa542a48a (patch)
treed4f0d7dea84e4cf686e375740fd23073db0aa83c /fs
parent19ddab06ed923d27339b8009d37b0ab3de93cadf (diff)
nfs41: open sequence setup/done support
Separate nfs4_open calls from nfs41: sequence setup/done support Call nfs4_sequence_done from respective rpc_call_done methods. Note that we need to pass a pointer to the nfs_server in calls data for passing on to nfs4_sequence_done. Signed-off-by: Andy Adamson<andros@netapp.com> Signed-off-by: Benny Halevy <bhalevy@panasas.com> [pnfs: client data server write validate and release] [use nfs4_sequence_done_free_slot] Signed-off-by: Andy Adamson<andros@umich.edu> Signed-off-by: Benny Halevy <bhalevy@panasas.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs')
-rw-r--r--fs/nfs/nfs4proc.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index a34fada51446..46e2509452a5 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -1241,6 +1241,10 @@ static void nfs4_open_prepare(struct rpc_task *task, void *calldata)
1241 nfs_copy_fh(&data->o_res.fh, data->o_arg.fh); 1241 nfs_copy_fh(&data->o_res.fh, data->o_arg.fh);
1242 } 1242 }
1243 data->timestamp = jiffies; 1243 data->timestamp = jiffies;
1244 if (nfs4_setup_sequence(data->o_arg.server->nfs_client,
1245 &data->o_arg.seq_args,
1246 &data->o_res.seq_res, 1, task))
1247 return;
1244 rpc_call_start(task); 1248 rpc_call_start(task);
1245 return; 1249 return;
1246out_no_action: 1250out_no_action:
@@ -1253,6 +1257,10 @@ static void nfs4_open_done(struct rpc_task *task, void *calldata)
1253 struct nfs4_opendata *data = calldata; 1257 struct nfs4_opendata *data = calldata;
1254 1258
1255 data->rpc_status = task->tk_status; 1259 data->rpc_status = task->tk_status;
1260
1261 nfs4_sequence_done_free_slot(data->o_arg.server, &data->o_res.seq_res,
1262 task->tk_status);
1263
1256 if (RPC_ASSASSINATED(task)) 1264 if (RPC_ASSASSINATED(task))
1257 return; 1265 return;
1258 if (task->tk_status == 0) { 1266 if (task->tk_status == 0) {