From 57b349e1c9f263cc45d5ed740e6698cd47414d2b Mon Sep 17 00:00:00 2001 From: Tigran Mkrtchyan Date: Mon, 13 Feb 2012 22:55:25 +0100 Subject: [PATCH] --- yaml --- r: 297430 b: refs/heads/master c: 62cd4a591c6e0ead783940169fb8d34fe3f04992 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/fs/nfsd/current_stateid.h | 11 ++++++++++- trunk/fs/nfsd/nfs4proc.c | 2 ++ trunk/fs/nfsd/nfs4state.c | 22 ++++++++++++++++++++-- 4 files changed, 33 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 9bec19d96df1..86cb43a571e0 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 8b70484c67cf5241cfbea0ee31b83e42e5bac163 +refs/heads/master: 62cd4a591c6e0ead783940169fb8d34fe3f04992 diff --git a/trunk/fs/nfsd/current_stateid.h b/trunk/fs/nfsd/current_stateid.h index a83dd508cb8c..21550b69dec6 100644 --- a/trunk/fs/nfsd/current_stateid.h +++ b/trunk/fs/nfsd/current_stateid.h @@ -4,8 +4,17 @@ #include "state.h" #include "xdr4.h" +/* + * functions to set current state id + */ extern void nfsd4_set_openstateid(struct nfsd4_compound_state *, struct nfsd4_open *); -extern void nfsd4_get_closestateid(struct nfsd4_compound_state *, struct nfsd4_close *); +extern void nfsd4_set_lockstateid(struct nfsd4_compound_state *, struct nfsd4_lock *); extern void nfsd4_set_closestateid(struct nfsd4_compound_state *, struct nfsd4_close *); +/* + * functions to consume current state id + */ +extern void nfsd4_get_closestateid(struct nfsd4_compound_state *, struct nfsd4_close *); +extern void nfsd4_get_lockustateid(struct nfsd4_compound_state *, struct nfsd4_locku *); + #endif /* _NFSD4_CURRENT_STATE_H */ diff --git a/trunk/fs/nfsd/nfs4proc.c b/trunk/fs/nfsd/nfs4proc.c index b08f6e50fc48..a985e19288b1 100644 --- a/trunk/fs/nfsd/nfs4proc.c +++ b/trunk/fs/nfsd/nfs4proc.c @@ -1474,6 +1474,7 @@ static struct nfsd4_operation nfsd4_ops[] = { .op_flags = OP_MODIFIES_SOMETHING, .op_name = "OP_LOCK", .op_rsize_bop = (nfsd4op_rsize)nfsd4_lock_rsize, + .op_set_currentstateid = (stateid_setter)nfsd4_set_lockstateid, }, [OP_LOCKT] = { .op_func = (nfsd4op_func)nfsd4_lockt, @@ -1484,6 +1485,7 @@ static struct nfsd4_operation nfsd4_ops[] = { .op_flags = OP_MODIFIES_SOMETHING, .op_name = "OP_LOCKU", .op_rsize_bop = (nfsd4op_rsize)nfsd4_status_stateid_rsize, + .op_get_currentstateid = (stateid_getter)nfsd4_get_lockustateid, }, [OP_LOOKUP] = { .op_func = (nfsd4op_func)nfsd4_lookup, diff --git a/trunk/fs/nfsd/nfs4state.c b/trunk/fs/nfsd/nfs4state.c index 2604e7ea8582..24eae5c11820 100644 --- a/trunk/fs/nfsd/nfs4state.c +++ b/trunk/fs/nfsd/nfs4state.c @@ -4710,12 +4710,30 @@ put_stateid(struct nfsd4_compound_state *cstate, stateid_t *stateid) cstate->current_stateid = stateid; } +/* + * functions to set current state id + */ void nfsd4_set_openstateid(struct nfsd4_compound_state *cstate, struct nfsd4_open *open) { put_stateid(cstate, &open->op_stateid); } +void +nfsd4_set_closestateid(struct nfsd4_compound_state *cstate, struct nfsd4_close *close) +{ + put_stateid(cstate, &close->cl_stateid); +} + +void +nfsd4_set_lockstateid(struct nfsd4_compound_state *cstate, struct nfsd4_lock *lock) +{ + put_stateid(cstate, &lock->lk_resp_stateid); +} + +/* + * functions to consume current state id + */ void nfsd4_get_closestateid(struct nfsd4_compound_state *cstate, struct nfsd4_close *close) { @@ -4723,7 +4741,7 @@ nfsd4_get_closestateid(struct nfsd4_compound_state *cstate, struct nfsd4_close * } void -nfsd4_set_closestateid(struct nfsd4_compound_state *cstate, struct nfsd4_close *close) +nfsd4_get_lockustateid(struct nfsd4_compound_state *cstate, struct nfsd4_locku *locku) { - get_stateid(cstate, &close->cl_stateid); + get_stateid(cstate, &locku->lu_stateid); }