commit ee173d09dc3fba168bf56a31bffd0468b38f06ef
Author: Sascha Wildner <[email protected]>
Date: Sun Oct 20 10:04:36 2013 +0200
kernel - Rewrite vnode ref-counting code to improve performance
* Rewrite the vnode ref-counting code and modify operation to not
immediately VOP_INACTIVE a vnode when its refs drops to 0. By
doing so we avoid cycling vnodes through exclusive locks when
temporarily accessing them (such as in a path lookup). Shared
locks can be used throughout.
* Track active/inactive vnodes a bit differently, keep track of
the number of vnodes that are still active but have zero refs,
and rewrite the vnode freeing code to use the new statistics
to deactivate cached vnodes.
Summary of changes:
sys/gnu/vfs/ext2fs/ext2_inode.c | 4 +-
sys/gnu/vfs/ext2fs/ext2_vnops.c | 4 +-
sys/kern/vfs_cache.c | 13 +-
sys/kern/vfs_lock.c | 726 +++++++++++++++++++------------------
sys/kern/vfs_mount.c | 38 +-
sys/kern/vfs_subr.c | 23 +-
sys/kern/vfs_syscalls.c | 3 +-
sys/sys/vnode.h | 45 ++-
sys/vfs/fifofs/fifo_vnops.c | 2 +-
sys/vfs/hammer/hammer_inode.c | 2 +-
sys/vfs/hammer2/hammer2_inode.c | 6 +-
sys/vfs/hpfs/hpfs_vnops.c | 2 +-
sys/vfs/isofs/cd9660/cd9660_node.c | 4 +-
sys/vfs/msdosfs/msdosfs_denode.c | 8 +-
sys/vfs/msdosfs/msdosfs_vfsops.c | 7 +-
sys/vfs/msdosfs/msdosfs_vnops.c | 6 +-
sys/vfs/nfs/nfs_node.c | 4 +-
sys/vfs/nfs/nfs_vnops.c | 12 +-
sys/vfs/ntfs/ntfs_vfsops.c | 2 +-
sys/vfs/ntfs/ntfs_vnops.c | 4 +-
sys/vfs/nwfs/nwfs_node.c | 8 +-
sys/vfs/nwfs/nwfs_vfsops.c | 2 +-
sys/vfs/nwfs/nwfs_vnops.c | 4 +-
sys/vfs/procfs/procfs_subr.c | 2 +-
sys/vfs/smbfs/smbfs_node.c | 4 +-
sys/vfs/smbfs/smbfs_vfsops.c | 2 +-
sys/vfs/smbfs/smbfs_vnops.c | 4 +-
sys/vfs/tmpfs/tmpfs_subr.c | 2 +-
sys/vfs/tmpfs/tmpfs_vfsops.c | 2 +-
sys/vfs/ufs/ufs_inode.c | 4 +-
sys/vfs/ufs/ufs_vnops.c | 4 +-
sys/vfs/union/union_subr.c | 27 +-
sys/vfs/union/union_vnops.c | 25 +-
sys/vm/vnode_pager.c | 2 +-
test/debug/vnodeinfo.c | 20 +-
usr.bin/systat/vmstat.c | 35 +-
usr.sbin/pstat/pstat.c | 5 +-
37 files changed, 567 insertions(+), 500 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/ee173d09dc3fba168bf56a31bffd0468b38f06ef
--
DragonFly BSD source repository