git: kernel - Rewrite vnode ref-counting code to improve performance

Matthew Dillon dillon at crater.dragonflybsd.org
Mon Oct 21 11:23:43 PDT 2013


commit ee173d09dc3fba168bf56a31bffd0468b38f06ef
Author: Sascha Wildner <saw at online.de>
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


More information about the Commits mailing list