lock: address differences in lock semantics
zero-length ranges: valid on windows, but nfs servers MUST return NFS4ERR_INVAL for LOCK with length=0. use MRxIsLockRealizable() to return STATUS_NOT_SUPPORTED for zero-length ranges (avoiding the lock upcall and rpc) ranges that extend past UINT64_MAX: not valid on windows. NFS expects length=UINT64_MAX for locking to end-of-file. use length=UINT64_MAX if length >= UINT64_MAX-offset (making lock ranges consistent with linux client) Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
This commit is contained in:
parent
2d252266c2
commit
d98da23d49
3 changed files with 18 additions and 2 deletions
|
|
@ -67,8 +67,8 @@ typedef struct __readwrite_upcall_args {
|
|||
} readwrite_upcall_args;
|
||||
|
||||
typedef struct __lock_upcall_args {
|
||||
LONGLONG offset;
|
||||
LONGLONG length;
|
||||
uint64_t offset;
|
||||
uint64_t length;
|
||||
BOOLEAN exclusive;
|
||||
BOOLEAN blocking;
|
||||
} lock_upcall_args;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue