diff options
author | Mateusz Guzik <mjg@FreeBSD.org> | 2019-11-30 16:41:47 +0000 |
---|---|---|
committer | Mateusz Guzik <mjg@FreeBSD.org> | 2019-11-30 16:41:47 +0000 |
commit | 0f4b850e85130fd11b611830dce7abde0d6457e7 (patch) | |
tree | 5989f5d095a00221dfc17aaa63345e721ae998d9 /sys/fs/tmpfs/tmpfs_vnops.c | |
parent | 89c4c2e53b5ea4c80e4f329b89a648080b76f950 (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.c | 6 |
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 */ |