Module Name:    src
Committed By:   hannken
Date:           Wed Jan 11 09:08:59 UTC 2017

Modified Files:
        src/share/man/man9: vnode.9
        src/sys/kern: vfs_subr.c vfs_vnode.c
        src/sys/miscfs/genfs: genfs_vnops.c
        src/sys/sys: vnode.h vnode_impl.h

Log Message:
Move vnode member v_lock as vi_lock to vnode_impl.h.


To generate a diff of this commit:
cvs rdiff -u -r1.77 -r1.78 src/share/man/man9/vnode.9
cvs rdiff -u -r1.456 -r1.457 src/sys/kern/vfs_subr.c
cvs rdiff -u -r1.71 -r1.72 src/sys/kern/vfs_vnode.c
cvs rdiff -u -r1.192 -r1.193 src/sys/miscfs/genfs/genfs_vnops.c
cvs rdiff -u -r1.271 -r1.272 src/sys/sys/vnode.h
cvs rdiff -u -r1.10 -r1.11 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.77 src/share/man/man9/vnode.9:1.78
--- src/share/man/man9/vnode.9:1.77	Wed Jan 11 09:07:57 2017
+++ src/share/man/man9/vnode.9	Wed Jan 11 09:08:58 2017
@@ -1,4 +1,4 @@
-.\"     $NetBSD: vnode.9,v 1.77 2017/01/11 09:07:57 hannken Exp $
+.\"     $NetBSD: vnode.9,v 1.78 2017/01/11 09:08:58 hannken Exp $
 .\"
 .\" Copyright (c) 2001, 2005, 2006 The NetBSD Foundation, Inc.
 .\" All rights reserved.
@@ -180,7 +180,6 @@ struct vnode {
 	} v_un;
 	enum vtype	v_type;			/* vnode type */
 	enum vtagtype	v_tag;			/* type of underlying data */
-	struct vnlock	v_lock;			/* lock for this vnode */
 	void 		*v_data;		/* private data for fs */
 	struct klist	v_klist;		/* notes attached to vnode */
 };
@@ -433,9 +432,7 @@ universal disk format file system
 systemV boot file system
 .El
 .Pp
-All vnode locking operations use
-.Em v_lock .
-This lock is acquired by calling
+The vnode lock is acquired by calling
 .Xr vn_lock 9
 and released by calling
 .Xr VOP_UNLOCK 9 .
@@ -461,10 +458,8 @@ locking.
 Multiple-reader locking functions equivalently only in the presence
 of big-lock SMP locking or a uni-processor machine.
 The lock may be held while sleeping.
-While the
-.Em v_lock
-is acquired, the holder is guaranteed that the vnode will not be
-reclaimed or invalidated.
+While the vnode lock is acquired, the holder is guaranteed that the
+vnode will not be reclaimed or invalidated.
 Most file system functions require that you hold the vnode lock on entry.
 See
 .Xr lock 9

Index: src/sys/kern/vfs_subr.c
diff -u src/sys/kern/vfs_subr.c:1.456 src/sys/kern/vfs_subr.c:1.457
--- src/sys/kern/vfs_subr.c:1.456	Wed Jan 11 09:07:57 2017
+++ src/sys/kern/vfs_subr.c	Wed Jan 11 09:08:58 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: vfs_subr.c,v 1.456 2017/01/11 09:07:57 hannken Exp $	*/
+/*	$NetBSD: vfs_subr.c,v 1.457 2017/01/11 09:08:58 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.456 2017/01/11 09:07:57 hannken Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vfs_subr.c,v 1.457 2017/01/11 09:08:58 hannken Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_ddb.h"
@@ -1116,7 +1116,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)("%sdata %p lock %p\n", prefix, vp->v_data, &vp->v_lock);
+	(*pr)("%sdata %p lock %p\n", prefix, vp->v_data, &vip->vi_lock);
 
 	(*pr)("%sstate %s key(%p %zd)", prefix, vstate_name(vip->vi_state),
 	    vip->vi_key.vk_mount, vip->vi_key.vk_key_len);

Index: src/sys/kern/vfs_vnode.c
diff -u src/sys/kern/vfs_vnode.c:1.71 src/sys/kern/vfs_vnode.c:1.72
--- src/sys/kern/vfs_vnode.c:1.71	Wed Jan 11 09:04:37 2017
+++ src/sys/kern/vfs_vnode.c	Wed Jan 11 09:08:58 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: vfs_vnode.c,v 1.71 2017/01/11 09:04:37 hannken Exp $	*/
+/*	$NetBSD: vfs_vnode.c,v 1.72 2017/01/11 09:08:58 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.71 2017/01/11 09:04:37 hannken Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vfs_vnode.c,v 1.72 2017/01/11 09:08:58 hannken Exp $");
 
 #include <sys/param.h>
 #include <sys/kernel.h>
@@ -1022,6 +1022,7 @@ vcache_alloc(void)
 	vip = pool_cache_get(vcache_pool, PR_WAITOK);
 	memset(vip, 0, sizeof(*vip));
 
+	rw_init(&vip->vi_lock);
 	/* SLIST_INIT(&vip->vi_hash); */
 	/* LIST_INIT(&vip->vi_nclist); */
 	/* LIST_INIT(&vip->vi_dnclist); */
@@ -1030,7 +1031,6 @@ vcache_alloc(void)
 	uvm_obj_init(&vp->v_uobj, &uvm_vnodeops, true, 0);
 	cv_init(&vp->v_cv, "vnode");
 
-	rw_init(&vp->v_lock);
 	vp->v_usecount = 1;
 	vp->v_type = VNON;
 	vp->v_size = vp->v_writesize = VSIZENOTSET;
@@ -1064,7 +1064,7 @@ vcache_free(vnode_impl_t *vip)
 	if (vp->v_type == VBLK || vp->v_type == VCHR)
 		spec_node_destroy(vp);
 
-	rw_destroy(&vp->v_lock);
+	rw_destroy(&vip->vi_lock);
 	uvm_obj_destroy(&vp->v_uobj, true);
 	cv_destroy(&vp->v_cv);
 	pool_cache_put(vcache_pool, vip);

Index: src/sys/miscfs/genfs/genfs_vnops.c
diff -u src/sys/miscfs/genfs/genfs_vnops.c:1.192 src/sys/miscfs/genfs/genfs_vnops.c:1.193
--- src/sys/miscfs/genfs/genfs_vnops.c:1.192	Mon Mar 24 13:42:40 2014
+++ src/sys/miscfs/genfs/genfs_vnops.c	Wed Jan 11 09:08:59 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: genfs_vnops.c,v 1.192 2014/03/24 13:42:40 hannken Exp $	*/
+/*	$NetBSD: genfs_vnops.c,v 1.193 2017/01/11 09:08:59 hannken Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -57,7 +57,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: genfs_vnops.c,v 1.192 2014/03/24 13:42:40 hannken Exp $");
+__KERNEL_RCSID(0, "$NetBSD: genfs_vnops.c,v 1.193 2017/01/11 09:08:59 hannken Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -66,7 +66,7 @@ __KERNEL_RCSID(0, "$NetBSD: genfs_vnops.
 #include <sys/mount.h>
 #include <sys/fstrans.h>
 #include <sys/namei.h>
-#include <sys/vnode.h>
+#include <sys/vnode_impl.h>
 #include <sys/fcntl.h>
 #include <sys/kmem.h>
 #include <sys/poll.h>
@@ -287,14 +287,15 @@ genfs_deadlock(void *v)
 		struct vnode *a_vp;
 		int a_flags;
 	} */ *ap = v;
-	struct vnode *vp = ap->a_vp;
+	vnode_t *vp = ap->a_vp;
+	vnode_impl_t *vip = VNODE_TO_VIMPL(vp);
 	int flags = ap->a_flags;
 	krw_t op;
 	int error;
 
 	op = (ISSET(flags, LK_EXCLUSIVE) ? RW_WRITER : RW_READER);
 	if (ISSET(flags, LK_NOWAIT)) {
-		if (! rw_tryenter(&vp->v_lock, op))
+		if (! rw_tryenter(&vip->vi_lock, op))
 			return EBUSY;
 		if (mutex_tryenter(vp->v_interlock)) {
 			error = vdead_check(vp, VDEAD_NOWAIT);
@@ -304,25 +305,25 @@ genfs_deadlock(void *v)
 		} else
 			error = EBUSY;
 		if (error)
-			rw_exit(&vp->v_lock);
+			rw_exit(&vip->vi_lock);
 		return error;
 	}
 
-	rw_enter(&vp->v_lock, op);
+	rw_enter(&vip->vi_lock, op);
 	mutex_enter(vp->v_interlock);
 	error = vdead_check(vp, VDEAD_NOWAIT);
 	if (error == EBUSY) {
-		rw_exit(&vp->v_lock);
+		rw_exit(&vip->vi_lock);
 		error = vdead_check(vp, 0);
 		KASSERT(error == ENOENT);
 		mutex_exit(vp->v_interlock);
-		rw_enter(&vp->v_lock, op);
+		rw_enter(&vip->vi_lock, op);
 		mutex_enter(vp->v_interlock);
 	}
 	KASSERT(error == ENOENT);
 	mutex_exit(vp->v_interlock);
 	if (! ISSET(flags, LK_RETRY)) {
-		rw_exit(&vp->v_lock);
+		rw_exit(&vip->vi_lock);
 		return ENOENT;
 	}
 	return 0;
@@ -337,9 +338,10 @@ genfs_deadunlock(void *v)
 	struct vop_unlock_args /* {
 		struct vnode *a_vp;
 	} */ *ap = v;
-	struct vnode *vp = ap->a_vp;
+	vnode_t *vp = ap->a_vp;
+	vnode_impl_t *vip = VNODE_TO_VIMPL(vp);
 
-	rw_exit(&vp->v_lock);
+	rw_exit(&vip->vi_lock);
 
 	return 0;
 }
@@ -354,7 +356,8 @@ genfs_lock(void *v)
 		struct vnode *a_vp;
 		int a_flags;
 	} */ *ap = v;
-	struct vnode *vp = ap->a_vp;
+	vnode_t *vp = ap->a_vp;
+	vnode_impl_t *vip = VNODE_TO_VIMPL(vp);
 	struct mount *mp = vp->v_mount;
 	int flags = ap->a_flags;
 	krw_t op;
@@ -364,7 +367,7 @@ genfs_lock(void *v)
 	if (ISSET(flags, LK_NOWAIT)) {
 		if (fstrans_start_nowait(mp, FSTRANS_SHARED))
 			return EBUSY;
-		if (! rw_tryenter(&vp->v_lock, op)) {
+		if (! rw_tryenter(&vip->vi_lock, op)) {
 			fstrans_done(mp);
 			return EBUSY;
 		}
@@ -374,18 +377,18 @@ genfs_lock(void *v)
 		} else
 			error = EBUSY;
 		if (error) {
-			rw_exit(&vp->v_lock);
+			rw_exit(&vip->vi_lock);
 			fstrans_done(mp);
 		}
 		return error;
 	}
 
 	fstrans_start(mp, FSTRANS_SHARED);
-	rw_enter(&vp->v_lock, op);
+	rw_enter(&vip->vi_lock, op);
 	mutex_enter(vp->v_interlock);
 	error = vdead_check(vp, VDEAD_NOWAIT);
 	if (error) {
-		rw_exit(&vp->v_lock);
+		rw_exit(&vip->vi_lock);
 		fstrans_done(mp);
 		error = vdead_check(vp, 0);
 		KASSERT(error == ENOENT);
@@ -403,10 +406,11 @@ genfs_unlock(void *v)
 	struct vop_unlock_args /* {
 		struct vnode *a_vp;
 	} */ *ap = v;
-	struct vnode *vp = ap->a_vp;
+	vnode_t *vp = ap->a_vp;
+	vnode_impl_t *vip = VNODE_TO_VIMPL(vp);
 	struct mount *mp = vp->v_mount;
 
-	rw_exit(&vp->v_lock);
+	rw_exit(&vip->vi_lock);
 	fstrans_done(mp);
 
 	return 0;
@@ -421,12 +425,13 @@ genfs_islocked(void *v)
 	struct vop_islocked_args /* {
 		struct vnode *a_vp;
 	} */ *ap = v;
-	struct vnode *vp = ap->a_vp;
+	vnode_t *vp = ap->a_vp;
+	vnode_impl_t *vip = VNODE_TO_VIMPL(vp);
 
-	if (rw_write_held(&vp->v_lock))
+	if (rw_write_held(&vip->vi_lock))
 		return LK_EXCLUSIVE;
 
-	if (rw_read_held(&vp->v_lock))
+	if (rw_read_held(&vip->vi_lock))
 		return LK_SHARED;
 
 	return 0;

Index: src/sys/sys/vnode.h
diff -u src/sys/sys/vnode.h:1.271 src/sys/sys/vnode.h:1.272
--- src/sys/sys/vnode.h:1.271	Wed Jan 11 09:07:57 2017
+++ src/sys/sys/vnode.h	Wed Jan 11 09:08:59 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: vnode.h,v 1.271 2017/01/11 09:07:57 hannken Exp $	*/
+/*	$NetBSD: vnode.h,v 1.272 2017/01/11 09:08:59 hannken Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -157,7 +157,6 @@ struct vnode {
 	} v_un;
 	enum vtype	v_type;			/* :: vnode type */
 	enum vtagtype	v_tag;			/* :: type of underlying data */
-	krwlock_t	v_lock;			/* v: lock for this vnode */
 	void 		*v_data;		/* :: private data for fs */
 	struct klist	v_klist;		/* i: notes attached to vnode */
 };

Index: src/sys/sys/vnode_impl.h
diff -u src/sys/sys/vnode_impl.h:1.10 src/sys/sys/vnode_impl.h:1.11
--- src/sys/sys/vnode_impl.h:1.10	Wed Jan 11 09:07:58 2017
+++ src/sys/sys/vnode_impl.h	Wed Jan 11 09:08:59 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: vnode_impl.h,v 1.10 2017/01/11 09:07:58 hannken Exp $	*/
+/*	$NetBSD: vnode_impl.h,v 1.11 2017/01/11 09:08:59 hannken Exp $	*/
 
 /*-
  * Copyright (c) 2016 The NetBSD Foundation, Inc.
@@ -76,6 +76,7 @@ struct vnode_impl {
 	TAILQ_ENTRY(vnode_impl) vi_synclist;	/* s: vnodes with dirty bufs */
 	TAILQ_ENTRY(vnode_impl) vi_mntvnodes;	/* m: vnodes for mount point */
 	SLIST_ENTRY(vnode_impl) vi_hash;	/* c: vnode cache list */
+	krwlock_t vi_lock;			/* -: lock for this vnode */
 	struct vcache_key vi_key;		/* c: vnode cache key */
 };
 typedef struct vnode_impl vnode_impl_t;

Reply via email to