Module Name:    src
Committed By:   hannken
Date:           Wed Dec 14 15:48:55 UTC 2016

Modified Files:
        src/share/man/man9: vnode.9
        src/sys/fs/msdosfs: msdosfs_vfsops.c
        src/sys/gdbscripts: vchain vdump
        src/sys/kern: vfs_subr.c vfs_vnode.c
        src/sys/sys: param.h vnode.h vnode_impl.h

Log Message:
Move vnode members "v_freelisthd" and "v_freelist" from "struct vnode"
to "struct vnode_impl" and rename to "vi_lrulisthd" and "vi_lrulist".

No functional change intended.

Welcome to 7.99.48


To generate a diff of this commit:
cvs rdiff -u -r1.72 -r1.73 src/share/man/man9/vnode.9
cvs rdiff -u -r1.118 -r1.119 src/sys/fs/msdosfs/msdosfs_vfsops.c
cvs rdiff -u -r1.7 -r1.8 src/sys/gdbscripts/vchain
cvs rdiff -u -r1.5 -r1.6 src/sys/gdbscripts/vdump
cvs rdiff -u -r1.451 -r1.452 src/sys/kern/vfs_subr.c
cvs rdiff -u -r1.61 -r1.62 src/sys/kern/vfs_vnode.c
cvs rdiff -u -r1.514 -r1.515 src/sys/sys/param.h
cvs rdiff -u -r1.266 -r1.267 src/sys/sys/vnode.h
cvs rdiff -u -r1.3 -r1.4 src/sys/sys/vnode_impl.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/share/man/man9/vnode.9
diff -u src/share/man/man9/vnode.9:1.72 src/share/man/man9/vnode.9:1.73
--- src/share/man/man9/vnode.9:1.72	Sat Aug 20 12:41:31 2016
+++ src/share/man/man9/vnode.9	Wed Dec 14 15:48:54 2016
@@ -1,4 +1,4 @@
-.\"     $NetBSD: vnode.9,v 1.72 2016/08/20 12:41:31 wiz Exp $
+.\"     $NetBSD: vnode.9,v 1.73 2016/12/14 15:48:54 hannken Exp $
 .\"
 .\" Copyright (c) 2001, 2005, 2006 The NetBSD Foundation, Inc.
 .\" All rights reserved.
@@ -27,7 +27,7 @@
 .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 .\" POSSIBILITY OF SUCH DAMAGE.
 .\"
-.Dd August 20, 2016
+.Dd December 14, 2016
 .Dt VNODE 9
 .Os
 .Sh NAME
@@ -175,8 +175,6 @@ struct vnode {
 	int		v_synclist_slot;	/* synclist slot index */
 	struct mount	*v_mount;		/* ptr to vfs we are in */
 	int		(**v_op)(void *);	/* vnode operations vector */
-	TAILQ_ENTRY(vnode) v_freelist;		/* vnode freelist */
-	struct vnodelst	*v_freelisthd;		/* which freelist? */
 	TAILQ_ENTRY(vnode) v_mntvnodes;		/* vnodes for mount point */
 	struct buflists	v_cleanblkhd;		/* clean blocklist head */
 	struct buflists	v_dirtyblkhd;		/* dirty blocklist head */
@@ -300,11 +298,8 @@ When both the
 .Em v_usecount
 and
 .Em v_holdcnt
-reach zero, the vnode is recycled to the freelist and may be reused
-for another file.
-The transition to and from the freelist is handled by
-a kernel thread
-and
+reach zero, the vnode is cached.
+The transition from the cache is handled by a kernel thread and
 .Fn vrecycle .
 Access to
 .Em v_usecount ,
@@ -354,14 +349,9 @@ See
 .Xr vnodeops 9
 for a description of vnode operations.
 .Pp
-When not in use, vnodes are kept on the freelist through
-.Em v_freelist .
-The vnodes still reference valid files but may be reused to refer to a
-new file at any time.
-When a valid vnode which is on the freelist is used again, the user
-must call
+When a valid vnode which is cached is used again, the user must call
 .Fn vget
-to increment the reference count and retrieve it from the freelist.
+to increment the reference count.
 When a user wants a new vnode for another file,
 .Fn vcache_get
 or
@@ -512,7 +502,6 @@ The members
 .Em v_holdcnt ,
 .Em v_dirtyblkhd ,
 .Em v_cleanblkhd ,
-.Em v_freelist ,
 and
 .Em v_synclist
 are modified in interrupt context and must be protected by
@@ -547,14 +536,14 @@ If both
 .Em v_usecount
 and
 .Em v_holdcnt
-are zero, the vnode is placed on the freelist.
+are zero, the vnode is cached.
 .It Fn vrele_async "vp"
 Will asychronously release the vnode in different context than the caller,
 sometime after the call.
 .It Fn vget "vp" "lockflags" "wait"
 Reclaim vnode
 .Fa vp
-from the freelist and increment its reference count.
+from the cache and increment its reference count.
 .Pp
 The vnode
 .Fa vp
@@ -628,17 +617,15 @@ directly.
 Mark the vnode
 .Fa vp
 as active by incrementing
-.Em vp-\*[Gt]v_holdcnt
-and moving the vnode from the freelist to the holdlist.
-Once on the holdlist, the vnode will not be recycled until it is
+.Em vp-\*[Gt]v_holdcnt .
+Once held, the vnode will not be recycled until it is
 released with
 .Fn holdrele .
 .It Fn holdrele "vp"
 Mark the vnode
 .Fa vp
 as inactive by decrementing
-.Em vp-\*[Gt]v_holdcnt
-and moving the vnode from the holdlist to the freelist.
+.Em vp-\*[Gt]v_holdcnt .
 .It Fn vcache_get "mp" "key" "key_len" "vpp"
 Allocate a new vnode.
 The new vnode is returned referenced in the address specified by

Index: src/sys/fs/msdosfs/msdosfs_vfsops.c
diff -u src/sys/fs/msdosfs/msdosfs_vfsops.c:1.118 src/sys/fs/msdosfs/msdosfs_vfsops.c:1.119
--- src/sys/fs/msdosfs/msdosfs_vfsops.c:1.118	Sat Mar 28 19:24:05 2015
+++ src/sys/fs/msdosfs/msdosfs_vfsops.c	Wed Dec 14 15:48:54 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: msdosfs_vfsops.c,v 1.118 2015/03/28 19:24:05 maxv Exp $	*/
+/*	$NetBSD: msdosfs_vfsops.c,v 1.119 2016/12/14 15:48:54 hannken Exp $	*/
 
 /*-
  * Copyright (C) 1994, 1995, 1997 Wolfgang Solfrank.
@@ -48,7 +48,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: msdosfs_vfsops.c,v 1.118 2015/03/28 19:24:05 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: msdosfs_vfsops.c,v 1.119 2016/12/14 15:48:54 hannken Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_compat_netbsd.h"
@@ -904,9 +904,6 @@ msdosfs_unmount(struct mount *mp, int mn
 		    vp->v_writecount, vp->v_holdcnt);
 		printf("mount %p, op %p\n",
 		    vp->v_mount, vp->v_op);
-		printf("freef %p, freeb %p, mount %p\n",
-		    vp->v_freelist.tqe_next, vp->v_freelist.tqe_prev,
-		    vp->v_mount);
 		printf("cleanblkhd %p, dirtyblkhd %p, numoutput %d, type %d\n",
 		    vp->v_cleanblkhd.lh_first,
 		    vp->v_dirtyblkhd.lh_first,

Index: src/sys/gdbscripts/vchain
diff -u src/sys/gdbscripts/vchain:1.7 src/sys/gdbscripts/vchain:1.8
--- src/sys/gdbscripts/vchain:1.7	Sat Nov 23 16:15:25 2013
+++ src/sys/gdbscripts/vchain	Wed Dec 14 15:48:55 2016
@@ -1,4 +1,4 @@
-#	$NetBSD: vchain,v 1.7 2013/11/23 16:15:25 riz Exp $
+#	$NetBSD: vchain,v 1.8 2016/12/14 15:48:55 hannken Exp $
 
 #	@(#)vchain	8.1 (Berkeley) 6/10/93
 #
@@ -7,9 +7,10 @@ define vchain
 	set $num = 0
 
 	set $vp=(struct vnode *)$arg0
+	set $vi=(struct vnode_impl *)$arg0
 	while ($vp)
-		printf "vp: 0x%lx freelist_next: 0x%lx usecount: %d flags: i:0x%x v:0x%x u:0x%x\n",\
-		       $vp, $vp->v_freelist.tqe_next, $vp->v_uobj.uo_refs, \
+		printf "vp: 0x%lx lrulist_next: 0x%lx usecount: %d flags: i:0x%x v:0x%x u:0x%x\n",\
+		       $vp, $vi->vi_lrulist.tqe_next, $vp->v_uobj.uo_refs, \
 		       $vp->v_iflag, $vp->v_vflag, $vp->v_uflag
 		set $num++
 		set $vp = $vp->v_mntvnodes.tqe_next

Index: src/sys/gdbscripts/vdump
diff -u src/sys/gdbscripts/vdump:1.5 src/sys/gdbscripts/vdump:1.6
--- src/sys/gdbscripts/vdump:1.5	Wed Nov 18 18:02:00 2009
+++ src/sys/gdbscripts/vdump	Wed Dec 14 15:48:55 2016
@@ -1,4 +1,4 @@
-#	$NetBSD: vdump,v 1.5 2009/11/18 18:02:00 eeh Exp $
+#	$NetBSD: vdump,v 1.6 2016/12/14 15:48:55 hannken Exp $
 
 #	@(#)vdump	8.1 (Berkeley) 6/10/93
 #
@@ -6,12 +6,14 @@
 define dumpvnodes
 
 	set $vp = (struct vnode *)$arg0
+	set $vi = (struct vnode_impl *)$arg0
 	while ($vp)
-		printf "vnode=0x%x freef=0x%x mountf=0x%x usecount=%d\n", $vp, $vp->v_freelist.tqe_next, $vp->v_mntvnodes.tqe_next, $vp->v_uobj.uo_refs
-		set $vp = (struct vnode *)$vp->v_freelist.tqe_next
+		printf "vnode=0x%x lruf=0x%x mountf=0x%x usecount=%d\n", $vp, $vi->vi_lrulist.tqe_next, $vp->v_mntvnodes.tqe_next, $vp->v_uobj.uo_refs
+		set $vi = (struct vnode_impl *)$vi->vi_lrulist.tqe_next
+		set $vp = (struct vnode *)$vi
 	end
 end
 
 document dumpvnodes
 dump the vnode list
-end
\ No newline at end of file
+end

Index: src/sys/kern/vfs_subr.c
diff -u src/sys/kern/vfs_subr.c:1.451 src/sys/kern/vfs_subr.c:1.452
--- src/sys/kern/vfs_subr.c:1.451	Thu Nov  3 11:04:21 2016
+++ src/sys/kern/vfs_subr.c	Wed Dec 14 15:48:55 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: vfs_subr.c,v 1.451 2016/11/03 11:04:21 hannken Exp $	*/
+/*	$NetBSD: vfs_subr.c,v 1.452 2016/12/14 15:48:55 hannken Exp $	*/
 
 /*-
  * Copyright (c) 1997, 1998, 2004, 2005, 2007, 2008 The NetBSD Foundation, Inc.
@@ -68,7 +68,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vfs_subr.c,v 1.451 2016/11/03 11:04:21 hannken Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vfs_subr.c,v 1.452 2016/12/14 15:48:55 hannken Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_ddb.h"
@@ -1114,8 +1114,7 @@ vprint_common(struct vnode *vp, const ch
 	    vp->v_usecount, vp->v_writecount, vp->v_holdcnt);
 	(*pr)("%ssize %" PRIx64 " writesize %" PRIx64 " numoutput %d\n",
 	    prefix, vp->v_size, vp->v_writesize, vp->v_numoutput);
-	(*pr)("%sfreelisthd %p data %p lock %p\n", prefix,
-	    vp->v_freelisthd, vp->v_data, &vp->v_lock);
+	(*pr)("%sdata %p lock %p\n", prefix, vp->v_data, &vp->v_lock);
 
 	(*pr)("%sstate %s key(%p %zd)", prefix, vstate_name(node->vi_state),
 	    node->vi_key.vk_mount, node->vi_key.vk_key_len);
@@ -1124,6 +1123,7 @@ vprint_common(struct vnode *vp, const ch
 	while (n-- > 0)
 		(*pr)(" %02x", *cp++);
 	(*pr)("\n");
+	(*pr)("%slrulisthd %p\n", prefix, node->vi_lrulisthd);
 
 #undef ARRAY_PRINT
 #undef ARRAY_SIZE

Index: src/sys/kern/vfs_vnode.c
diff -u src/sys/kern/vfs_vnode.c:1.61 src/sys/kern/vfs_vnode.c:1.62
--- src/sys/kern/vfs_vnode.c:1.61	Wed Dec 14 15:46:57 2016
+++ src/sys/kern/vfs_vnode.c	Wed Dec 14 15:48:55 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: vfs_vnode.c,v 1.61 2016/12/14 15:46:57 hannken Exp $	*/
+/*	$NetBSD: vfs_vnode.c,v 1.62 2016/12/14 15:48:55 hannken Exp $	*/
 
 /*-
  * Copyright (c) 1997-2011 The NetBSD Foundation, Inc.
@@ -156,7 +156,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vfs_vnode.c,v 1.61 2016/12/14 15:46:57 hannken Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vfs_vnode.c,v 1.62 2016/12/14 15:48:55 hannken Exp $");
 
 #include <sys/param.h>
 #include <sys/kernel.h>
@@ -428,6 +428,7 @@ static int
 cleanvnode(void)
 {
 	vnode_t *vp;
+	vnode_impl_t *vi;
 	vnodelst_t *listhd;
 	struct mount *mp;
 
@@ -435,7 +436,8 @@ cleanvnode(void)
 
 	listhd = &vnode_free_list;
 try_nextlist:
-	TAILQ_FOREACH(vp, listhd, v_freelist) {
+	TAILQ_FOREACH(vi, listhd, vi_lrulist) {
+		vp = VIMPL_TO_VNODE(vi);
 		/*
 		 * It's safe to test v_usecount and v_iflag
 		 * without holding the interlock here, since
@@ -443,7 +445,7 @@ try_nextlist:
 		 * lists.
 		 */
 		KASSERT(vp->v_usecount == 0);
-		KASSERT(vp->v_freelisthd == listhd);
+		KASSERT(vi->vi_lrulisthd == listhd);
 
 		if (!mutex_tryenter(vp->v_interlock))
 			continue;
@@ -455,7 +457,7 @@ try_nextlist:
 		break;
 	}
 
-	if (vp == NULL) {
+	if (vi == NULL) {
 		if (listhd == &vnode_free_list) {
 			listhd = &vnode_hold_list;
 			goto try_nextlist;
@@ -504,6 +506,7 @@ vdrain_thread(void *cookie)
 void
 vremfree(vnode_t *vp)
 {
+	vnode_impl_t *vi = VNODE_TO_VIMPL(vp);
 
 	KASSERT(mutex_owned(vp->v_interlock));
 	KASSERT(vp->v_usecount == 0);
@@ -514,12 +517,12 @@ vremfree(vnode_t *vp)
 	 */
 	mutex_enter(&vnode_free_list_lock);
 	if (vp->v_holdcnt > 0) {
-		KASSERT(vp->v_freelisthd == &vnode_hold_list);
+		KASSERT(vi->vi_lrulisthd == &vnode_hold_list);
 	} else {
-		KASSERT(vp->v_freelisthd == &vnode_free_list);
+		KASSERT(vi->vi_lrulisthd == &vnode_free_list);
 	}
-	TAILQ_REMOVE(vp->v_freelisthd, vp, v_freelist);
-	vp->v_freelisthd = NULL;
+	TAILQ_REMOVE(vi->vi_lrulisthd, vi, vi_lrulist);
+	vi->vi_lrulisthd = NULL;
 	mutex_exit(&vnode_free_list_lock);
 }
 
@@ -620,11 +623,12 @@ vtryrele(vnode_t *vp)
 static void
 vrelel(vnode_t *vp, int flags)
 {
+	vnode_impl_t *vi = VNODE_TO_VIMPL(vp);
 	bool recycle, defer;
 	int error;
 
 	KASSERT(mutex_owned(vp->v_interlock));
-	KASSERT(vp->v_freelisthd == NULL);
+	KASSERT(vi->vi_lrulisthd == NULL);
 
 	if (__predict_false(vp->v_op == dead_vnodeop_p &&
 	    VSTATE_GET(vp) != VS_RECLAIMED)) {
@@ -694,7 +698,7 @@ vrelel(vnode_t *vp, int flags)
 			 * clean it here.  We donate it our last reference.
 			 */
 			mutex_enter(&vrele_lock);
-			TAILQ_INSERT_TAIL(&vrele_list, vp, v_freelist);
+			TAILQ_INSERT_TAIL(&vrele_list, vi, vi_lrulist);
 			if (++vrele_pending > (desiredvnodes >> 8))
 				cv_signal(&vrele_cv);
 			mutex_exit(&vrele_lock);
@@ -785,11 +789,11 @@ vrelel(vnode_t *vp, int flags)
 		 */
 		mutex_enter(&vnode_free_list_lock);
 		if (vp->v_holdcnt > 0) {
-			vp->v_freelisthd = &vnode_hold_list;
+			vi->vi_lrulisthd = &vnode_hold_list;
 		} else {
-			vp->v_freelisthd = &vnode_free_list;
+			vi->vi_lrulisthd = &vnode_free_list;
 		}
-		TAILQ_INSERT_TAIL(vp->v_freelisthd, vp, v_freelist);
+		TAILQ_INSERT_TAIL(vi->vi_lrulisthd, vi, vi_lrulist);
 		mutex_exit(&vnode_free_list_lock);
 		mutex_exit(vp->v_interlock);
 	}
@@ -825,6 +829,7 @@ vrele_thread(void *cookie)
 {
 	vnodelst_t skip_list;
 	vnode_t *vp;
+	vnode_impl_t *vi;
 	struct mount *mp;
 
 	TAILQ_INIT(&skip_list);
@@ -835,13 +840,14 @@ vrele_thread(void *cookie)
 			vrele_gen++;
 			cv_broadcast(&vrele_cv);
 			cv_timedwait(&vrele_cv, &vrele_lock, hz);
-			TAILQ_CONCAT(&vrele_list, &skip_list, v_freelist);
+			TAILQ_CONCAT(&vrele_list, &skip_list, vi_lrulist);
 		}
-		vp = TAILQ_FIRST(&vrele_list);
+		vi = TAILQ_FIRST(&vrele_list);
+		vp = VIMPL_TO_VNODE(vi);
 		mp = vp->v_mount;
-		TAILQ_REMOVE(&vrele_list, vp, v_freelist);
+		TAILQ_REMOVE(&vrele_list, vi, vi_lrulist);
 		if (fstrans_start_nowait(mp, FSTRANS_LAZY) != 0) {
-			TAILQ_INSERT_TAIL(&skip_list, vp, v_freelist);
+			TAILQ_INSERT_TAIL(&skip_list, vi, vi_lrulist);
 			continue;
 		}
 		vrele_pending--;
@@ -878,15 +884,16 @@ vref(vnode_t *vp)
 void
 vholdl(vnode_t *vp)
 {
+	vnode_impl_t *vi = VNODE_TO_VIMPL(vp);
 
 	KASSERT(mutex_owned(vp->v_interlock));
 
 	if (vp->v_holdcnt++ == 0 && vp->v_usecount == 0) {
 		mutex_enter(&vnode_free_list_lock);
-		KASSERT(vp->v_freelisthd == &vnode_free_list);
-		TAILQ_REMOVE(vp->v_freelisthd, vp, v_freelist);
-		vp->v_freelisthd = &vnode_hold_list;
-		TAILQ_INSERT_TAIL(vp->v_freelisthd, vp, v_freelist);
+		KASSERT(vi->vi_lrulisthd == &vnode_free_list);
+		TAILQ_REMOVE(vi->vi_lrulisthd, vi, vi_lrulist);
+		vi->vi_lrulisthd = &vnode_hold_list;
+		TAILQ_INSERT_TAIL(vi->vi_lrulisthd, vi, vi_lrulist);
 		mutex_exit(&vnode_free_list_lock);
 	}
 }
@@ -898,6 +905,7 @@ vholdl(vnode_t *vp)
 void
 holdrelel(vnode_t *vp)
 {
+	vnode_impl_t *vi = VNODE_TO_VIMPL(vp);
 
 	KASSERT(mutex_owned(vp->v_interlock));
 
@@ -908,10 +916,10 @@ holdrelel(vnode_t *vp)
 	vp->v_holdcnt--;
 	if (vp->v_holdcnt == 0 && vp->v_usecount == 0) {
 		mutex_enter(&vnode_free_list_lock);
-		KASSERT(vp->v_freelisthd == &vnode_hold_list);
-		TAILQ_REMOVE(vp->v_freelisthd, vp, v_freelist);
-		vp->v_freelisthd = &vnode_free_list;
-		TAILQ_INSERT_TAIL(vp->v_freelisthd, vp, v_freelist);
+		KASSERT(vi->vi_lrulisthd == &vnode_hold_list);
+		TAILQ_REMOVE(vi->vi_lrulisthd, vi, vi_lrulist);
+		vi->vi_lrulisthd = &vnode_free_list;
+		TAILQ_INSERT_TAIL(vi->vi_lrulisthd, vi, vi_lrulist);
 		mutex_exit(&vnode_free_list_lock);
 	}
 }

Index: src/sys/sys/param.h
diff -u src/sys/sys/param.h:1.514 src/sys/sys/param.h:1.515
--- src/sys/sys/param.h:1.514	Mon Dec 12 21:56:00 2016
+++ src/sys/sys/param.h	Wed Dec 14 15:48:55 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: param.h,v 1.514 2016/12/12 21:56:00 maya Exp $	*/
+/*	$NetBSD: param.h,v 1.515 2016/12/14 15:48:55 hannken Exp $	*/
 
 /*-
  * Copyright (c) 1982, 1986, 1989, 1993
@@ -67,7 +67,7 @@
  *	2.99.9		(299000900)
  */
 
-#define	__NetBSD_Version__	799004700	/* NetBSD 7.99.47 */
+#define	__NetBSD_Version__	799004800	/* NetBSD 7.99.48 */
 
 #define __NetBSD_Prereq__(M,m,p) (((((M) * 100000000) + \
     (m) * 1000000) + (p) * 100) <= __NetBSD_Version__)

Index: src/sys/sys/vnode.h
diff -u src/sys/sys/vnode.h:1.266 src/sys/sys/vnode.h:1.267
--- src/sys/sys/vnode.h:1.266	Wed Dec 14 15:46:57 2016
+++ src/sys/sys/vnode.h	Wed Dec 14 15:48:55 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: vnode.h,v 1.266 2016/12/14 15:46:57 hannken Exp $	*/
+/*	$NetBSD: vnode.h,v 1.267 2016/12/14 15:48:55 hannken Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -119,7 +119,6 @@ struct vnode;
 struct buf;
 
 LIST_HEAD(buflists, buf);
-TAILQ_HEAD(vnodelst, vnode);
 
 /*
  * Reading or writing any of these items requires holding the appropriate
@@ -152,8 +151,6 @@ struct vnode {
 	int		v_synclist_slot;	/* s: synclist slot index */
 	struct mount	*v_mount;		/* v: ptr to vfs we are in */
 	int		(**v_op)(void *);	/* :: vnode operations vector */
-	TAILQ_ENTRY(vnode) v_freelist;		/* f: vnode freelist */
-	struct vnodelst	*v_freelisthd;		/* f: which freelist? */
 	TAILQ_ENTRY(vnode) v_mntvnodes;		/* m: vnodes for mount point */
 	struct buflists	v_cleanblkhd;		/* x: clean blocklist head */
 	struct buflists	v_dirtyblkhd;		/* x: dirty blocklist head */
@@ -181,7 +178,6 @@ struct vnode {
 #define	v_fifoinfo	v_un.vu_fifoinfo
 #define	v_ractx		v_un.vu_ractx
 
-typedef struct vnodelst vnodelst_t;
 typedef struct vnode vnode_t;
 #endif
 

Index: src/sys/sys/vnode_impl.h
diff -u src/sys/sys/vnode_impl.h:1.3 src/sys/sys/vnode_impl.h:1.4
--- src/sys/sys/vnode_impl.h:1.3	Wed Dec 14 15:46:57 2016
+++ src/sys/sys/vnode_impl.h	Wed Dec 14 15:48:55 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: vnode_impl.h,v 1.3 2016/12/14 15:46:57 hannken Exp $	*/
+/*	$NetBSD: vnode_impl.h,v 1.4 2016/12/14 15:48:55 hannken Exp $	*/
 
 /*-
  * Copyright (c) 2016 The NetBSD Foundation, Inc.
@@ -42,6 +42,8 @@ enum vnode_state {
 	VS_RECLAIMING,	/* Intermediate, detaching the fs node. */
 	VS_RECLAIMED	/* Stable, no fs node attached. */
 };
+TAILQ_HEAD(vnodelst, vnode_impl);
+typedef struct vnodelst vnodelst_t;
 struct vcache_key {
 	struct mount *vk_mount;
 	const void *vk_key;
@@ -50,6 +52,8 @@ struct vcache_key {
 struct vnode_impl {
 	struct vnode vi_vnode;
 	enum vnode_state vi_state;
+	struct vnodelst *vi_lrulisthd;
+	TAILQ_ENTRY(vnode_impl) vi_lrulist;
 	SLIST_ENTRY(vnode_impl) vi_hash;
 	struct vcache_key vi_key;
 };

Reply via email to