freebsd-nq/sys/fs
Rick Macklem ff45b9fc1a Bjorn reported a problem where the Linux NFSv4.1 client is
using an open_to_lock_owner4 when that lock_owner4 has already
been created by a previous open_to_lock_owner4. This caused the NFS server
to reply NFSERR_INVAL.

For NFSv4.0, this is an error, although the updated NFSv4.0 RFC7530 notes
that the correct error reply is NFSERR_BADSEQID (RFC3530 did not specify
what error to return).

For NFSv4.1, it is not obvious whether or not this is allowed by RFC5661,
but the NFSv4.1 server can handle this case without error.
This patch changes the NFSv4.1 (and NFSv4.2) server to handle multiple
uses of the same lock_owner in open_to_lock_owner so that it now correctly
interoperates with the Linux NFS client.
It also changes the error returned for NFSv4.0 to be NFSERR_BADSEQID.

Thanks go to Bjorn for diagnosing this and testing the patch.
He also provided a program that I could use to reproduce the problem.

Tested by:	bj@cebitec.uni-bielefeld.de (Bjorn Fischer)
PR:		249567
Reported by:	bj@cebitec.uni-bielefeld.de (Bjorn Fischer)
MFC after:	3 days
2020-09-26 23:05:38 +00:00
..
autofs fs: clean up empty lines in .c and .h files 2020-09-01 21:18:40 +00:00
cd9660 fs: clean up empty lines in .c and .h files 2020-09-01 21:18:40 +00:00
cuse fs: clean up empty lines in .c and .h files 2020-09-01 21:18:40 +00:00
deadfs vfs: flatten vop vectors 2019-12-16 00:06:22 +00:00
devfs fs: clean up empty lines in .c and .h files 2020-09-01 21:18:40 +00:00
ext2fs fs: clean up empty lines in .c and .h files 2020-09-01 21:18:40 +00:00
fdescfs fs: clean up empty lines in .c and .h files 2020-09-01 21:18:40 +00:00
fifofs fs: clean up empty lines in .c and .h files 2020-09-01 21:18:40 +00:00
fuse fusefs: fix mmap'd writes in direct_io mode 2020-09-24 16:27:53 +00:00
mntfs Add a new "mntfs" pseudo file system which provides private device vnodes for 2020-03-06 18:41:37 +00:00
msdosfs fs: clean up empty lines in .c and .h files 2020-09-01 21:18:40 +00:00
nfs Do not copy vp into f_data for DTYPE_VNODE files. 2020-09-15 21:55:21 +00:00
nfsclient fs: clean up empty lines in .c and .h files 2020-09-01 21:18:40 +00:00
nfsserver Bjorn reported a problem where the Linux NFSv4.1 client is 2020-09-26 23:05:38 +00:00
nullfs fs: clean up empty lines in .c and .h files 2020-09-01 21:18:40 +00:00
procfs fs: clean up empty lines in .c and .h files 2020-09-01 21:18:40 +00:00
pseudofs vfs: remove the thread argument from vget 2020-08-16 17:18:54 +00:00
smbfs fs: clean up empty lines in .c and .h files 2020-09-01 21:18:40 +00:00
tmpfs vm_ooffset_t is now unsigned 2020-09-18 16:48:08 +00:00
udf udf: Validate the full file entry length 2020-09-22 17:05:01 +00:00
unionfs fs: clean up empty lines in .c and .h files 2020-09-01 21:18:40 +00:00