diff options
| author | Poul-Henning Kamp <phk@FreeBSD.org> | 1997-09-24 07:46:54 +0000 |
|---|---|---|
| committer | Poul-Henning Kamp <phk@FreeBSD.org> | 1997-09-24 07:46:54 +0000 |
| commit | 0054419366971d980c406b87f79a14e5b92135f6 (patch) | |
| tree | 8e6a924eb263c1ba019f81fdd19e51bf869ebb82 /sys/kern/vfs_export.c | |
| parent | e1fa905ad483c3eab9a38b034d6e4210377e79ec (diff) | |
Notes
Diffstat (limited to 'sys/kern/vfs_export.c')
| -rw-r--r-- | sys/kern/vfs_export.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/sys/kern/vfs_export.c b/sys/kern/vfs_export.c index 810cc590f4d4..3f0a9da59d85 100644 --- a/sys/kern/vfs_export.c +++ b/sys/kern/vfs_export.c @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * @(#)vfs_subr.c 8.31 (Berkeley) 5/26/95 - * $Id: vfs_subr.c,v 1.103 1997/09/14 02:49:06 peter Exp $ + * $Id: vfs_subr.c,v 1.104 1997/09/16 11:43:38 bde Exp $ */ /* @@ -95,6 +95,8 @@ int vttoif_tab[9] = { (bp)->b_vnbufs.le_next = NOLIST; \ } TAILQ_HEAD(freelst, vnode) vnode_free_list; /* vnode free list */ +static u_long wantfreevnodes = 0; +SYSCTL_INT(_debug, OID_AUTO, wantfreevnodes, CTLFLAG_RW, &wantfreevnodes, 0, ""); static u_long freevnodes = 0; SYSCTL_INT(_debug, OID_AUTO, freevnodes, CTLFLAG_RD, &freevnodes, 0, ""); @@ -350,7 +352,11 @@ getnewvnode(tag, mp, vops, vpp) simple_lock(&vnode_free_list_slock); - if (freevnodes >= desiredvnodes) { + if (wantfreevnodes && freevnodes < wantfreevnodes) { + vp = NULL; + } else if (freevnodes <= desiredvnodes) { + vp = NULL; + } else { TAILQ_FOREACH(vp, &vnode_free_list, v_freelist) { if (!simple_lock_try(&vp->v_interlock)) continue; @@ -369,8 +375,6 @@ getnewvnode(tag, mp, vops, vpp) break; } } - } else { - vp = NULL; } if (vp) { |
