kernel - Rewrite vnode ref-counting code to improve performance
authorSascha Wildner <saw@online.de>
Sun, 20 Oct 2013 08:04:36 +0000 (10:04 +0200)
committerMatthew Dillon <dillon@apollo.backplane.com>
Mon, 21 Oct 2013 18:05:47 +0000 (11:05 -0700)
commitee173d09dc3fba168bf56a31bffd0468b38f06ef
tree556c5979912cd5b26adf85a2dbf8826d1f82dbd8
parente22c1f3520a076b4bfa998820f074683824ee0ad
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.
37 files changed:
sys/gnu/vfs/ext2fs/ext2_inode.c
sys/gnu/vfs/ext2fs/ext2_vnops.c
sys/kern/vfs_cache.c
sys/kern/vfs_lock.c
sys/kern/vfs_mount.c
sys/kern/vfs_subr.c
sys/kern/vfs_syscalls.c
sys/sys/vnode.h
sys/vfs/fifofs/fifo_vnops.c
sys/vfs/hammer/hammer_inode.c
sys/vfs/hammer2/hammer2_inode.c
sys/vfs/hpfs/hpfs_vnops.c
sys/vfs/isofs/cd9660/cd9660_node.c
sys/vfs/msdosfs/msdosfs_denode.c
sys/vfs/msdosfs/msdosfs_vfsops.c
sys/vfs/msdosfs/msdosfs_vnops.c
sys/vfs/nfs/nfs_node.c
sys/vfs/nfs/nfs_vnops.c
sys/vfs/ntfs/ntfs_vfsops.c
sys/vfs/ntfs/ntfs_vnops.c
sys/vfs/nwfs/nwfs_node.c
sys/vfs/nwfs/nwfs_vfsops.c
sys/vfs/nwfs/nwfs_vnops.c
sys/vfs/procfs/procfs_subr.c
sys/vfs/smbfs/smbfs_node.c
sys/vfs/smbfs/smbfs_vfsops.c
sys/vfs/smbfs/smbfs_vnops.c
sys/vfs/tmpfs/tmpfs_subr.c
sys/vfs/tmpfs/tmpfs_vfsops.c
sys/vfs/ufs/ufs_inode.c
sys/vfs/ufs/ufs_vnops.c
sys/vfs/union/union_subr.c
sys/vfs/union/union_vnops.c
sys/vm/vnode_pager.c
test/debug/vnodeinfo.c
usr.bin/systat/vmstat.c
usr.sbin/pstat/pstat.c