git: kernel - Cleanup vfs_lock & ref-count states states
dillon at crater.dragonflybsd.org
Tue Oct 22 00:31:35 PDT 2013
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
* 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
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(-)
DragonFly BSD source repository
More information about the Commits