aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfsd/nfs4state.c
diff options
context:
space:
mode:
authorTigran Mkrtchyan <kofemann@gmail.com>2012-02-13 16:55:24 -0500
committerJ. Bruce Fields <bfields@redhat.com>2012-02-15 11:20:38 -0500
commit8b70484c67cf5241cfbea0ee31b83e42e5bac163 (patch)
tree2625d76be0ddbc5b1c27ca5aca96006482e49747 /fs/nfsd/nfs4state.c
parent19ff0f288c6f2100987408ecc2cb911a2d50bc76 (diff)
nfsd41: handle current stateid in open and close
Signed-off-by: Tigran Mkrtchyan <kofemann@gmail.com> Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Diffstat (limited to 'fs/nfsd/nfs4state.c')
-rw-r--r--fs/nfsd/nfs4state.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
index 905808bc94bb..2604e7ea8582 100644
--- a/fs/nfsd/nfs4state.c
+++ b/fs/nfsd/nfs4state.c
@@ -4695,3 +4695,35 @@ nfs4_state_shutdown(void)
4695 nfs4_unlock_state(); 4695 nfs4_unlock_state();
4696 nfsd4_destroy_callback_queue(); 4696 nfsd4_destroy_callback_queue();
4697} 4697}
4698
4699static void
4700get_stateid(struct nfsd4_compound_state *cstate, stateid_t *stateid)
4701{
4702 if (cstate->current_stateid && CURRENT_STATEID(stateid))
4703 memcpy(stateid, cstate->current_stateid, sizeof(stateid_t));
4704}
4705
4706static void
4707put_stateid(struct nfsd4_compound_state *cstate, stateid_t *stateid)
4708{
4709 if (cstate->minorversion)
4710 cstate->current_stateid = stateid;
4711}
4712
4713void
4714nfsd4_set_openstateid(struct nfsd4_compound_state *cstate, struct nfsd4_open *open)
4715{
4716 put_stateid(cstate, &open->op_stateid);
4717}
4718
4719void
4720nfsd4_get_closestateid(struct nfsd4_compound_state *cstate, struct nfsd4_close *close)
4721{
4722 get_stateid(cstate, &close->cl_stateid);
4723}
4724
4725void
4726nfsd4_set_closestateid(struct nfsd4_compound_state *cstate, struct nfsd4_close *close)
4727{
4728 get_stateid(cstate, &close->cl_stateid);
4729}