svn commit: r201338 - stable/8/sys/kern
Konstantin Belousov
kib at FreeBSD.org
Thu Dec 31 11:49:14 UTC 2009
Author: kib
Date: Thu Dec 31 11:49:13 2009
New Revision: 201338
URL: http://svn.freebsd.org/changeset/base/201338
Log:
MFC r201134:
Add a knob to allow reclaim of the directory vnodes that are source of
the namecache records.
Modified:
stable/8/sys/kern/vfs_subr.c
Directory Properties:
stable/8/sys/ (props changed)
stable/8/sys/amd64/include/xen/ (props changed)
stable/8/sys/cddl/contrib/opensolaris/ (props changed)
stable/8/sys/contrib/dev/acpica/ (props changed)
stable/8/sys/contrib/pf/ (props changed)
stable/8/sys/dev/xen/xenpci/ (props changed)
Modified: stable/8/sys/kern/vfs_subr.c
==============================================================================
--- stable/8/sys/kern/vfs_subr.c Thu Dec 31 10:53:04 2009 (r201337)
+++ stable/8/sys/kern/vfs_subr.c Thu Dec 31 11:49:13 2009 (r201338)
@@ -152,6 +152,10 @@ SYSCTL_LONG(_vfs, OID_AUTO, wantfreevnod
static u_long freevnodes;
SYSCTL_LONG(_vfs, OID_AUTO, freevnodes, CTLFLAG_RD, &freevnodes, 0, "");
+static int vlru_allow_cache_src;
+SYSCTL_INT(_vfs, OID_AUTO, vlru_allow_cache_src, CTLFLAG_RW,
+ &vlru_allow_cache_src, 0, "Allow vlru to reclaim source vnode");
+
/*
* Various variables used for debugging the new implementation of
* reassignbuf().
@@ -643,7 +647,9 @@ vlrureclaim(struct mount *mp)
* If it's been deconstructed already, it's still
* referenced, or it exceeds the trigger, skip it.
*/
- if (vp->v_usecount || !LIST_EMPTY(&(vp)->v_cache_src) ||
+ if (vp->v_usecount ||
+ (!vlru_allow_cache_src &&
+ !LIST_EMPTY(&(vp)->v_cache_src)) ||
(vp->v_iflag & VI_DOOMED) != 0 || (vp->v_object != NULL &&
vp->v_object->resident_page_count > trigger)) {
VI_UNLOCK(vp);
@@ -668,7 +674,9 @@ vlrureclaim(struct mount *mp)
* interlock, the other thread will be unable to drop the
* vnode lock before our VOP_LOCK() call fails.
*/
- if (vp->v_usecount || !LIST_EMPTY(&(vp)->v_cache_src) ||
+ if (vp->v_usecount ||
+ (!vlru_allow_cache_src &&
+ !LIST_EMPTY(&(vp)->v_cache_src)) ||
(vp->v_object != NULL &&
vp->v_object->resident_page_count > trigger)) {
VOP_UNLOCK(vp, LK_INTERLOCK);
More information about the svn-src-stable
mailing list