opnsense-src/sys/fs
Rick Macklem 972883b9e0 nfscl: Use hash lists to improve expected search performance for opens
A problem was reported via email, where a large (130000+) accumulation
of NFSv4 opens on an NFSv4 mount caused significant lock contention
on the mutex used to protect the client mount's open/lock state.
Although the root cause for the accumulation of opens was not
resolved, it is obvious that the NFSv4 client is not designed to
handle 100000+ opens efficiently.  When searching for an open,
usually for a match by file handle, a linear search of all opens
is done.

Commit 3f7e14ad93 added a hash table of lists hashed on file handle
for the opens.  This patch uses the hash lists for searching for
a matching open based of file handle instead of an exhaustive
linear search of all opens.
This change appears to be performance neutral for a small number
of opens, but should improve expected performance for a large
number of opens.

This commit should not affect the high level semantics of open
handling.

(cherry picked from commit 96b40b8967)
2021-06-11 18:21:03 -07:00
..
autofs Ensure that dirent's d_off field is initialized 2021-01-03 11:50:31 -05:00
cd9660 Move mnt_maxsymlinklen into appropriate fs mount data structures 2021-06-01 02:48:16 +03:00
cuse Fix for loading cuse.ko via rc.d . Make sure we declare the cuse(3) 2020-10-23 08:44:53 +00:00
deadfs vn_open(): If the vnode is reclaimed during open(2), do not return error. 2021-02-24 09:42:42 +02:00
devfs devfs: fix use count leak when using TIOCSCTTY 2021-04-10 05:57:55 +00:00
ext2fs ext2: add missing uio_td initialization to ext2_htree_append_block 2021-06-07 00:29:49 +00:00
fdescfs fdescfs: add an option to return underlying file vnode on lookup 2021-06-11 03:33:48 +03:00
fifofs fs: clean up empty lines in .c and .h files 2020-09-01 21:18:40 +00:00
fuse fusefs: fix a dead store in fuse_vnop_advlock 2021-04-08 02:15:46 +00:00
mntfs Add a new "mntfs" pseudo file system which provides private device vnodes for 2020-03-06 18:41:37 +00:00
msdosfs msdosfs: fix vnode leak with msdosfs_rename() 2021-03-02 18:43:26 +00:00
nfs nfscl: Add hash lists for the NFSv4 opens 2021-06-04 18:16:10 -07:00
nfsclient nfscl: Use hash lists to improve expected search performance for opens 2021-06-11 18:21:03 -07:00
nfsserver nfs: even up value returned by nfsrv_parsename with copyinstr 2021-06-07 00:29:38 +00:00
nullfs nullfs: dirty v_object must imply the need for inactivation 2021-05-29 14:48:09 +03:00
procfs procfs_map: switch to use vm_object_kvme_type 2021-05-22 12:38:30 +03:00
pseudofs pseudofs: use vget_prep + vget_finish instead of vget + the interlock 2021-05-22 18:22:35 +00:00
smbfs Ensure that dirent's d_off field is initialized 2021-01-03 11:50:31 -05:00
tmpfs tmpfs: save on relocking the allnode lock in tmpfs_free_node_locked 2021-06-07 00:34:59 +00:00
udf Make MAXPHYS tunable. Bump MAXPHYS to 1M. 2020-11-28 12:12:51 +00:00
unionfs Split out cwd/root/jail, cmask state from filedesc table 2020-11-17 21:14:13 +00:00