commit 2097b3da24e5e213773d237633e6f0f5ff1a4148
Author: Matthew Dillon <[email protected]>
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