git: 25d8cf225ac2 - stable/14 - ufs: restore name cache fast path lookup

From: Mateusz Guzik <mjg_at_FreeBSD.org>
Date: Fri, 22 Sep 2023 21:51:13 UTC
The branch stable/14 has been updated by mjg:

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

commit 25d8cf225ac29bb450bf52866aa6d169b9193178
Author:     Mateusz Guzik <mjg@FreeBSD.org>
AuthorDate: 2023-09-09 21:48:57 +0000
Commit:     Mateusz Guzik <mjg@FreeBSD.org>
CommitDate: 2023-09-22 21:50:46 +0000

    ufs: restore name cache fast path lookup
    
    Found by:       dchagin
    Fixes:  f3c81b973897 ("ufs: add missing vop_fplookup ops")
    
    (cherry picked from commit a87c6962affc2d1994d8f30806c934eb4cb7af22)
---
 sys/ufs/ffs/ffs_vnops.c | 6 ++++--
 sys/ufs/ufs/ufs_vnops.c | 4 ++--
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/sys/ufs/ffs/ffs_vnops.c b/sys/ufs/ffs/ffs_vnops.c
index 0dd64f696e0c..2b11a15c46c9 100644
--- a/sys/ufs/ffs/ffs_vnops.c
+++ b/sys/ufs/ffs/ffs_vnops.c
@@ -135,6 +135,8 @@ static vop_setextattr_t	ffs_setextattr;
 static vop_vptofh_t	ffs_vptofh;
 static vop_vput_pair_t	ffs_vput_pair;
 
+vop_fplookup_vexec_t ufs_fplookup_vexec;
+
 /* Global vfs data structures for ufs. */
 struct vop_vector ffs_vnodeops1 = {
 	.vop_default =		&ufs_vnodeops,
@@ -151,7 +153,7 @@ struct vop_vector ffs_vnodeops1 = {
 	.vop_write =		ffs_write,
 	.vop_vptofh =		ffs_vptofh,
 	.vop_vput_pair =	ffs_vput_pair,
-	.vop_fplookup_vexec =	VOP_EAGAIN,
+	.vop_fplookup_vexec =	ufs_fplookup_vexec,
 	.vop_fplookup_symlink =	VOP_EAGAIN,
 };
 VFS_VOP_VECTOR_REGISTER(ffs_vnodeops1);
@@ -192,7 +194,7 @@ struct vop_vector ffs_vnodeops2 = {
 	.vop_setextattr =	ffs_setextattr,
 	.vop_vptofh =		ffs_vptofh,
 	.vop_vput_pair =	ffs_vput_pair,
-	.vop_fplookup_vexec =	VOP_EAGAIN,
+	.vop_fplookup_vexec =	ufs_fplookup_vexec,
 	.vop_fplookup_symlink =	VOP_EAGAIN,
 };
 VFS_VOP_VECTOR_REGISTER(ffs_vnodeops2);
diff --git a/sys/ufs/ufs/ufs_vnops.c b/sys/ufs/ufs/ufs_vnops.c
index a7d5e8ba96fc..79cca75fc563 100644
--- a/sys/ufs/ufs/ufs_vnops.c
+++ b/sys/ufs/ufs/ufs_vnops.c
@@ -101,7 +101,7 @@ VFS_SMR_DECLARE;
 #include <ufs/ffs/ffs_extern.h>
 
 static vop_accessx_t	ufs_accessx;
-static vop_fplookup_vexec_t ufs_fplookup_vexec;
+vop_fplookup_vexec_t ufs_fplookup_vexec;
 static int ufs_chmod(struct vnode *, int, struct ucred *, struct thread *);
 static int ufs_chown(struct vnode *, uid_t, gid_t, struct ucred *,
     struct thread *);
@@ -475,7 +475,7 @@ ufs_accessx(
  * VOP_FPLOOKUP_VEXEC routines are subject to special circumstances, see
  * the comment above cache_fplookup for details.
  */
-static int
+int
 ufs_fplookup_vexec(
 	struct vop_fplookup_vexec_args /* {
 		struct vnode *a_vp;