freebsd-nq/sys/fs/msdosfs
Mateusz Guzik cc3593fbd9 vfs: rework vnode list management
The current notion of an active vnode is eliminated.

Vnodes transition between 0<->1 hold counts all the time and the
associated traversal between different lists induces significant
scalability problems in certain workloads.

Introduce a global list containing all allocated vnodes. They get
unlinked only when UMA reclaims memory and are only requeued when
hold count reaches 0.

Sample result from an incremental make -s -j 104 bzImage on tmpfs:
stock:   118.55s user 3649.73s system 7479% cpu 50.382 total
patched: 122.38s user 1780.45s system 6242% cpu 30.480 total

Reviewed by:	jeff
Tested by:	pho (in a larger patch, previous version)
Differential Revision:	https://reviews.freebsd.org/D22997
2020-01-13 02:37:25 +00:00
..
bootsect.h msdosfs: use C99 types 2017-05-19 18:13:41 +00:00
bpb.h msdosfs: use C99 types 2017-05-19 18:13:41 +00:00
denode.h makefs: share denode.h between kernel msdosfs and makefs 2019-08-21 19:07:13 +00:00
direntry.h Revert msdosfs MAKEFS #ifdef changes from r319870 2018-07-24 21:10:17 +00:00
fat.h buf: Add B_INVALONERR flag to discard data 2019-09-11 21:24:14 +00:00
msdosfs_conv.c msdosfs: trim EOL whitespace 2018-07-31 12:44:28 +00:00
msdosfs_denode.c msdos: vgone unconstructed vnode before vputing it 2020-01-01 22:50:23 +00:00
msdosfs_fat.c Plug the rest of undef behavior places that were missed in r337456. 2019-10-11 18:37:02 +00:00
msdosfs_iconv.c sys/fs: further adoption of SPDX licensing ID tags. 2017-11-27 15:15:37 +00:00
msdosfs_lookup.c msdosfs: Remove redundant brelse() after r294954 2019-09-06 08:08:10 +00:00
msdosfs_vfsops.c vfs: rework vnode list management 2020-01-13 02:37:25 +00:00
msdosfs_vnops.c vfs: drop the mostly unused flags argument from VOP_UNLOCK 2020-01-03 22:29:58 +00:00
msdosfsmount.h msdosfsmount.h: fix ifdef comment 2019-09-09 18:35:17 +00:00