aboutsummaryrefslogtreecommitdiff
path: root/sys/fs/tmpfs/tmpfs_vnops.c
diff options
context:
space:
mode:
authorMateusz Guzik <mjg@FreeBSD.org>2019-11-30 16:41:47 +0000
committerMateusz Guzik <mjg@FreeBSD.org>2019-11-30 16:41:47 +0000
commit0f4b850e85130fd11b611830dce7abde0d6457e7 (patch)
tree5989f5d095a00221dfc17aaa63345e721ae998d9 /sys/fs/tmpfs/tmpfs_vnops.c
parent89c4c2e53b5ea4c80e4f329b89a648080b76f950 (diff)
tmpfs: add fast path to tmpfs_access for common case lookup
VEXEC consists of vast majority of all calls and almost all targets have at least 0111.
Notes
Notes: svn path=/head/; revision=355227
Diffstat (limited to 'sys/fs/tmpfs/tmpfs_vnops.c')
-rw-r--r--sys/fs/tmpfs/tmpfs_vnops.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/sys/fs/tmpfs/tmpfs_vnops.c b/sys/fs/tmpfs/tmpfs_vnops.c
index 3b64b73ab4fb..3ee90251f2fc 100644
--- a/sys/fs/tmpfs/tmpfs_vnops.c
+++ b/sys/fs/tmpfs/tmpfs_vnops.c
@@ -331,6 +331,12 @@ tmpfs_access(struct vop_access_args *v)
node = VP_TO_TMPFS_NODE(vp);
+ /*
+ * Common case path lookup.
+ */
+ if (__predict_true(accmode == VEXEC && (node->tn_mode & 0111) == 0111))
+ return (0);
+
switch (vp->v_type) {
case VDIR:
/* FALLTHROUGH */