git: c3134a6af07a - main - nfscl: Disable use of the LookupOpen RPC

From: Rick Macklem <rmacklem_at_FreeBSD.org>
Date: Sat, 27 Nov 2021 23:38:01 UTC
The branch main has been updated by rmacklem:

URL: https://cgit.FreeBSD.org/src/commit/?id=c3134a6af07af402b71f0b8587e09cb783c79eda

commit c3134a6af07af402b71f0b8587e09cb783c79eda
Author:     Rick Macklem <rmacklem@FreeBSD.org>
AuthorDate: 2021-11-27 23:34:45 +0000
Commit:     Rick Macklem <rmacklem@FreeBSD.org>
CommitDate: 2021-11-27 23:34:45 +0000

    nfscl: Disable use of the LookupOpen RPC
    
    The LookupOpen RPC reduces the number of Open RPCs
    needed.  Unfortunately, it breaks certain software
    builds over NFS, so disable it until this is fixed.
    
    The LookupOpen RPC is only used for NFSv4.1/4.2
    mounts when the "oneopenown" mount option is
    specified, so this should not affect many users.
---
 sys/fs/nfsclient/nfs_clvnops.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/sys/fs/nfsclient/nfs_clvnops.c b/sys/fs/nfsclient/nfs_clvnops.c
index 920bf2524c01..4a027ea07f26 100644
--- a/sys/fs/nfsclient/nfs_clvnops.c
+++ b/sys/fs/nfsclient/nfs_clvnops.c
@@ -1322,13 +1322,18 @@ nfs_lookup(struct vop_lookup_args *ap)
 		cache_purge_negative(dvp);
 	}
 
+	openmode = 0;
+#if 0
+	/*
+	 * The use of LookupOpen breaks some builds.  It is disabled
+	 * until that is fixed.
+	 */
 	/*
 	 * If this an NFSv4.1/4.2 mount using the "oneopenown" mount
 	 * option, it is possible to do the Open operation in the same
 	 * compound as Lookup, so long as delegations are not being
 	 * issued.  This saves doing a separate RPC for Open.
 	 */
-	openmode = 0;
 	NFSLOCKMNT(nmp);
 	if (NFSHASNFSV4N(nmp) && NFSHASONEOPENOWN(nmp) &&
 	    (nmp->nm_privflag & NFSMNTP_DELEGISSUED) == 0 &&
@@ -1340,6 +1345,7 @@ nfs_lookup(struct vop_lookup_args *ap)
 			openmode |= NFSV4OPEN_ACCESSWRITE;
 	}
 	NFSUNLOCKMNT(nmp);
+#endif
 
 	newvp = NULLVP;
 	NFSINCRGLOBAL(nfsstatsv1.lookupcache_misses);