]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
MFS: r366238
authorRick Macklem <rmacklem@FreeBSD.org>
Tue, 29 Sep 2020 15:09:38 +0000 (15:09 +0000)
committerRick Macklem <rmacklem@FreeBSD.org>
Tue, 29 Sep 2020 15:09:38 +0000 (15:09 +0000)
commit65dd5ed99b91891da459d7d2267cb00245bc7ff7
treebb626b2aa490562dc19bc14202631383ee8ec196
parentf614d5fcd6f00605835dd299b07716dfe542368b
MFS: r366238
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.

PR: 249567
Approved by: re (gjb)
sys/fs/nfsserver/nfs_nfsdstate.c