Bug 226494

Summary: ESX NFSv4.1 client fails when ReclaimComplete for one FS fails
Product: Base System Reporter: Rick Macklem <rmacklem>
Component: kernAssignee: Rick Macklem <rmacklem>
Status: Closed FIXED    
Severity: Affects Some People Keywords: patch
Priority: --- Flags: rmacklem: mfc-stable11+
rmacklem: mfc-stable10+
Version: CURRENT   
Hardware: Any   
OS: Any   
Attachments:
Description Flags
Allow ReclaimComplete for a single FS
none
Just return NFS_OK for ReclaimComplete with rca_one_fs TRUE
none
Just return NFS_OK for ReclaimComplete with rca_one_fs TRUE none

Description Rick Macklem freebsd_committer freebsd_triage 2018-03-10 01:18:19 UTC
Created attachment 191365 [details]
Allow ReclaimComplete for a single FS

The ESX NFSv4.1 client does a ReclaimComplete for a single FS when
mounting. The FreeBSD server doesn't support the single FS case.
This patch allows this case by assuming it applies to all FS within
the mount, which seems sufficient, since other NFSv4.1 clients never
do single FS ReclaimComplete operations.
Comment 1 Rick Macklem freebsd_committer freebsd_triage 2018-03-10 01:19:29 UTC
I think the patch is sufficient and needs to be committed in April.
Comment 2 Rick Macklem freebsd_committer freebsd_triage 2018-07-16 00:03:19 UTC
Created attachment 195165 [details]
Just return NFS_OK for ReclaimComplete with rca_one_fs TRUE

This patch modifies the FreeBSD NFSv4.1 server so that it just returns
NFS_OK for a ReclaimComplete operation with rca_one_fs == TRUE.
This appears to be sufficient to make the ESXi 6.7 client happy and
is what the Linux 4.17-rc2 kernel nfs server does.

Since RFC5661 is vague w.r.t. when the rca_one_fs == TRUE case is used
and does not specify an error return for servers that do not use it,
doing this instead of returning NFS4ERR_NOT_SUPP seems acceptable.
(I do believe the rca_one_fs == TRUE case is only meant to be used
 when the server transfers a file system to a different server, the
 FreeBSD server has no use for it at this time.)
Comment 3 Rick Macklem freebsd_committer freebsd_triage 2018-07-17 22:48:00 UTC
Created attachment 195222 [details]
Just return NFS_OK for ReclaimComplete with rca_one_fs TRUE

This version of the patch should have the same behaviour as the last
one. The change is that it sets a flag LCL_RECLAIMONEFS on the clientid
for the rca_one_fs == TRUE case. This flag was suggested by David Noveck
on nfsv4@ietf.org and can be used to disable returning of NFSERR_GRACE
errors for new mounts. (The code does not currently do this, but may do
so via a future patch.)
Comment 4 Rick Macklem freebsd_committer freebsd_triage 2018-08-21 11:34:05 UTC
Patch has been committed and MFC'd, so I am closing this PR.