freebsd-dev/sys
Mateusz Guzik c42b77e694 vfs: lockless lookup
Provides full scalability as long as all visited filesystems support the
lookup and terminal vnodes are different.

Inner workings are explained in the comment above cache_fplookup.

Capabilities and fd-relative lookups are not supported and will result in
immediate fallback to regular code.

Symlinks, ".." in the path, mount points without support for lockless lookup
and mismatched counters will result in an attempt to get a reference to the
directory vnode and continue in regular lookup. If this fails, the entire
operation is aborted and regular lookup starts from scratch. However, care is
taken that data is not copied again from userspace.

Sample benchmark:
incremental -j 104 bzImage on tmpfs:
before: 142.96s user 1025.63s system 4924% cpu 23.731 total
after: 147.36s user 313.40s system 3216% cpu 14.326 total

Sample microbenchmark: access calls to separate files in /tmpfs, 104 workers, ops/s:
before:   2165816
after:  151216530

Reviewed by:    kib
Tested by:      pho (in a patchset)
Differential Revision:	https://reviews.freebsd.org/D25578
2020-07-25 10:37:15 +00:00
..
amd64 Include TMPFS in all the GENERIC kernel configs 2020-07-24 08:40:04 +00:00
arm mmccam: aw_mmc: Only print the new ios value under bootverbose 2020-07-24 18:44:50 +00:00
arm64 Include TMPFS in all the GENERIC kernel configs 2020-07-24 08:40:04 +00:00
bsm bsm: add AUE_CLOSERANGE 2020-04-24 01:27:25 +00:00
cam mmccam: Make non bootverbose more readable 2020-07-24 18:43:46 +00:00
cddl vfs: introduce vnode sequence counters 2020-07-25 10:31:52 +00:00
compat usb(4): Stop checking for failures from malloc(M_WAITOK). 2020-07-22 14:32:47 +00:00
conf Move the Intel DMAR busdma backend to a generic place so 2020-07-21 10:38:51 +00:00
contrib MFV: r363292 2020-07-18 07:35:34 +00:00
crypto padlock: fix Via Padlock with 192-bit keys 2020-07-20 16:12:14 +00:00
ddb [PowerPC] More relocation fixes 2020-06-21 03:39:26 +00:00
dev Split-out the Intel GAS (Guest Address Space) management component 2020-07-25 09:28:38 +00:00
dts Remove licenses 2020-06-04 17:20:58 +00:00
fs Add support for ext_pgs mbufs to nfsm_uiombuflist() and nfsm_split(). 2020-07-24 23:17:09 +00:00
gdb
geom Consistently use gctl_get_provider instead of home-grown variants. 2020-07-22 02:15:21 +00:00
gnu dts: patch the am33xx dts for upcoming clock support 2020-06-05 20:14:54 +00:00
i386 Include TMPFS in all the GENERIC kernel configs 2020-07-24 08:40:04 +00:00
isa
kern vfs: lockless lookup 2020-07-25 10:37:15 +00:00
kgssapi Add support for optional separate output buffers to in-kernel crypto. 2020-05-25 22:12:04 +00:00
libkern libkern: Add arc4random_uniform 2020-05-23 17:51:06 +00:00
mips Set si_addr to badvaddr for TLB faults. 2020-07-23 20:08:42 +00:00
modules modules/crypto: disable optimized assembly skein1024 implementation 2020-07-23 19:19:33 +00:00
net Transition from rtrequest1_fib() to rib_action(). 2020-07-21 19:56:13 +00:00
net80211 [net80211] Add new privileges; restrict what can be done in a jail. 2020-07-19 15:16:27 +00:00
netgraph Fix L2CAP ACL packet PB(Packet Boundary) flag for LE PDU. 2020-07-17 15:50:03 +00:00
netinet Clear the pointer to the socket when closing it also in case of 2020-07-23 19:43:49 +00:00
netinet6 Transition from rtrequest1_fib() to rib_action(). 2020-07-21 19:56:13 +00:00
netipsec Simplify IPsec transform-specific teardown. 2020-06-25 23:59:16 +00:00
netpfil Don't print VNET pointer when initializing dummynet 2020-07-13 13:35:36 +00:00
netsmb
nfs Transition from rtrequest1_fib() to rib_action(). 2020-07-21 19:56:13 +00:00
nfsclient
nfsserver
nlm Fix export_args ex_flags field so that is 64bits, the same as mnt_flags. 2020-06-14 00:10:18 +00:00
ofed Infiniband clients must be attached and detached in a specific order in ibcore. 2020-07-06 08:50:11 +00:00
opencrypto Add support for KTLS RX via software decryption. 2020-07-23 23:48:18 +00:00
powerpc Include TMPFS in all the GENERIC kernel configs 2020-07-24 08:40:04 +00:00
riscv Include TMPFS in all the GENERIC kernel configs 2020-07-24 08:40:04 +00:00
rpc Fix up a comment added by r362455. 2020-06-21 02:49:56 +00:00
security vfs: add the infrastructure for lockless lookup 2020-07-25 10:32:45 +00:00
sys vfs: lockless lookup 2020-07-25 10:37:15 +00:00
teken
tests
tools
ufs lockmgr: add adaptive spinning 2020-07-22 12:30:31 +00:00
vm vm: fix swap reservation leak and clean up surrounding code 2020-07-24 13:23:32 +00:00
x86 Split-out the Intel GAS (Guest Address Space) management component 2020-07-25 09:28:38 +00:00
xdr Split XDR into separate kernel module. Make krpc depend on xdr. 2020-04-17 06:04:20 +00:00
xen
Makefile