aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMateusz Guzik <mjg@FreeBSD.org>2023-09-09 21:48:57 +0000
committerMateusz Guzik <mjg@FreeBSD.org>2023-09-22 21:50:46 +0000
commit25d8cf225ac29bb450bf52866aa6d169b9193178 (patch)
treedbb8023a028c049bf9e3329e4bcdbeceea89449a
parent41fad6503c1e5259e65d4f14110a5decb7653b02 (diff)
downloadsrc-25d8cf225ac29bb450bf52866aa6d169b9193178.tar.gz
src-25d8cf225ac29bb450bf52866aa6d169b9193178.zip
ufs: restore name cache fast path lookup
Found by: dchagin Fixes: f3c81b973897 ("ufs: add missing vop_fplookup ops") (cherry picked from commit a87c6962affc2d1994d8f30806c934eb4cb7af22)
-rw-r--r--sys/ufs/ffs/ffs_vnops.c6
-rw-r--r--sys/ufs/ufs/ufs_vnops.c4
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;