diff options
author | Rajesh Amaravathi <rajesh@redhat.com> | 2012-04-12 14:49:44 +0530 |
---|---|---|
committer | Vijay Bellur <vijay@gluster.com> | 2012-05-17 02:12:49 -0700 |
commit | cbcf82aa58058fe05dbd9a8d8879ca0364e5df95 (patch) | |
tree | 83c7dc8da592fb0442d5626eac6779c813d61655 /rpc/xdr/src/nlm4.x | |
parent | d8ede99e6f429d3a63b794c495f99fc8f76e9651 (diff) |
nfs/nlm: procedures for PC clients
* This change introduces four NLMv4 procedures:
NM_LOCK, SHARE, UNSHARE and FREE_ALL.
These are used by PC clients (windows/dos) to control access
to files.
1. NM_LOCK: this lock is not monitored by statd.
2. SHARE: A share reservation is a lock on the whole file
that is taken whenever a file is opened on windows clients.
This has ACCESS (N, R, W, RW) and DENY MODE (N, R, W, RW).
ACCESS: mode of access requested by the client;
DENY MODE: what the requesting client wants to
deny other clients.
3. UNSHARE: remove a share reservation obtained by SHARE.
Called while closing a file.
4. FREE_ALL: remove all share reservations and locks,
both monitored and unmonitored, of the calling client.
* lock and nm_lock use a common function with only
a flag conveying whether or not to monitor a lock.
* NOTES:
1. SHARE reservations are not STACK_WIND'd to subsequent xlators.
These are maintained in-memory in the nfs xlator.
2. Consequently, for SHARE reservations to work effectively,
all PC clients *must* mount from the same gNfs server.
Not doing so will result in different servers maintaining
separate SHARE reservations which will not be enforced
for obvious reasons.
Change-Id: Id4f22670a94ed58691a6a7f4c80aa8c11421a277
BUG: 800287
Signed-off-by: Rajesh Amaravathi <rajesh@redhat.com>
Reviewed-on: http://review.gluster.com/3212
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Krishna Srinivas <krishna@gluster.com>
Diffstat (limited to 'rpc/xdr/src/nlm4.x')
-rw-r--r-- | rpc/xdr/src/nlm4.x | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/rpc/xdr/src/nlm4.x b/rpc/xdr/src/nlm4.x index d738b27770d..a6de6f32bf4 100644 --- a/rpc/xdr/src/nlm4.x +++ b/rpc/xdr/src/nlm4.x @@ -74,7 +74,7 @@ struct nlm4_holder { }; struct nlm4_lock { - string caller_name<MAXNAMELEN>; + string caller_name<LM_MAXSTRLEN>; netobj fh; netobj oh; u_int32_t svid; @@ -83,7 +83,7 @@ struct nlm4_lock { }; struct nlm4_share { - string caller_name<MAXNAMELEN>; + string caller_name<LM_MAXSTRLEN>; netobj fh; netobj oh; fsh_mode mode; @@ -146,6 +146,11 @@ struct nlm4_shareres { int sequence; }; +struct nlm4_freeallargs { + string name<LM_MAXSTRLEN>; /* client hostname */ + uint32 state; /* unused */ +}; + /* * argument for the procedure called by rpc.statd when a monitored host * status change. |