git: kernel - Cleanup vfs_lock & ref-count states states

Matthew Dillon dillon at crater.dragonflybsd.org
Tue Oct 22 00:31:35 PDT 2013


commit 2097b3da24e5e213773d237633e6f0f5ff1a4148
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Mon Oct 21 23:51:49 2013 -0700

    kernel - Cleanup vfs_lock & ref-count states states
    
    * Clean up vp->v_state state transitions
    
    * Fix bugs in the cachedvnodes counter tracking.  v_refcnt has to
      be masked against VREF_MASK to detect non-zero->0 and 0->non-zero
      transitions properly.
    
    * Clear VREF_FINALIZE when reactivating a vnode in vget().
    
    * vhold()/vdrop() no longer prevent a vnode from being moved to the
      vinactive list.  They simply prevent reclamation.
    
    * Adjust the vnlru trigger points a bit.
    
    * When cleaning, leave the vnode on the inactive list until we determine
      we can destroy it.  Add a ref instead of using the VREF_TERMINATE
      placeholding ref (since the vnode is still on the list).
    
    * Implement vnode->v_act and remove the inactive mid-point stuff.  The
      now is that vnodes are selectively moved from the active list to
      the inactive list as needed.  Inactive vnodes are then cleaned up in order.
    
    * Adjust hysteresis so that vnlru has a better chance of handling the
      vnode garbage collection before we forced it to be done synchronously
      in userexit.

Summary of changes:
 sys/kern/vfs_lock.c  | 489 ++++++++++++++++++++++-----------------------------
 sys/kern/vfs_mount.c |  13 +-
 sys/kern/vfs_subr.c  |   4 +-
 sys/sys/vnode.h      |   1 -
 4 files changed, 211 insertions(+), 296 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/2097b3da24e5e213773d237633e6f0f5ff1a4148


-- 
DragonFly BSD source repository



More information about the Commits mailing list