freebsd-skq/sys/fs/nfs
Rick Macklem a3e709cd33 Modify the NFSv4.1 server so that it allows ReclaimComplete as done by ESXi 6.7.
I believe that a ReclaimComplete with rca_one_fs == TRUE is only
to be used after a file system has been transferred to a different
file server.  However, RFC5661 is somewhat vague w.r.t. this and
the ESXi 6.7 client does both a ReclaimComplete with rca_one_fs == TRUE
and one with ReclaimComplete with rca_one_fs == FALSE.
Therefore, just ignore the rca_one_fs == TRUE operation and return
NFS_OK without doing anything instead of replying NFS4ERR_NOTSUPP.
This allows the ESXi 6.7 NFSv4.1 client to do a mount.
After discussion on the NFSv4 IETF working group mailing list, doing this
along with setting a flag to note that a ReclaimComplete with rca_one_fs TRUE
was an appropriate way to handle this.
The flag that indicates that a ReclaimComplete with rca_one_fs == TRUE was
done may be used to disable replies of NFS4ERR_GRACE for non-reclaim
state operations in a future commit.

This patch along with r332790, r334492 and r336357 allow ESXi 6.7 NFSv4.1 mounts
work ok. ESX 6.5 NFSv4.1 mounts do not work well, due to what I believe are
violations of RFC-5661 and should not be used.

Reported by:	andreas.nagy@frequentis.com
Tested by:	andreas.nagy@frequentis.com, daniel@ftml.net (earlier version)
MFC after:	2 weeks
Relnotes:	yes
2018-07-28 20:21:04 +00:00
..
nfs_commonacl.c Merge the pNFS server code from projects/pnfs-planb-server into head. 2018-06-12 19:36:32 +00:00
nfs_commonkrpc.c Set CLSET_TIMEOUT on TCP connections to pNFS DSs. 2018-07-21 01:33:07 +00:00
nfs_commonport.c Merge the pNFS server code from projects/pnfs-planb-server into head. 2018-06-12 19:36:32 +00:00
nfs_commonsubs.c Add an optional feature to the pNFS server. 2018-07-02 19:21:33 +00:00
nfs_var.h Modify the NFSv4.1 server so that it allows ReclaimComplete as done by ESXi 6.7. 2018-07-28 20:21:04 +00:00
nfs.h Modify the NFSv4.1 server so that it allows ReclaimComplete as done by ESXi 6.7. 2018-07-28 20:21:04 +00:00
nfscl.h sys/fs: further adoption of SPDX licensing ID tags. 2017-11-27 15:15:37 +00:00
nfsclstate.h Fix the pNFS client when mirrors aren't on the same machine. 2018-07-14 19:51:44 +00:00
nfsdport.h sys/fs: further adoption of SPDX licensing ID tags. 2017-11-27 15:15:37 +00:00
nfskpiport.h sys/fs: further adoption of SPDX licensing ID tags. 2017-11-27 15:15:37 +00:00
nfsm_subs.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
nfsport.h Move four functions in nfscl.ko to nfscommon.ko. 2018-06-14 10:00:19 +00:00
nfsproto.h Modify the reasons for not issuing a delegation in the NFSv4.1 server. 2018-07-16 21:32:50 +00:00
nfsrvcache.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
nfsrvstate.h Add an optional feature to the pNFS server. 2018-07-02 19:21:33 +00:00
nfsv4_errstr.h sys/fs: further adoption of SPDX licensing ID tags. 2017-11-27 15:15:37 +00:00
rpcv2.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
xdr_subs.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00