Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 12 Feb 2004 10:15:07 +0900
From:      Jun Kuriyama <kuriyama@imgsrc.co.jp>
To:        Kirk McKusick <mckusick@mckusick.com>
Cc:        Current <freebsd-current@FreeBSD.org>
Subject:   acquiring duplicate lock of same type: "vnode interlock"
Message-ID:  <7m65ed2j50.wl@black.imgsrc.co.jp>

next in thread | raw e-mail | index | archive | help

Is this patch safe for locking?  This may remove warnings below:

acquiring duplicate lock of same type: "vnode interlock"
 1st vnode interlock @ ufs/ffs/ffs_snapshot.c:488
 2nd vnode interlock @ ufs/ffs/ffs_snapshot.c:491


Index: ffs_snapshot.c
===================================================================
RCS file: /home/ncvs/src/sys/ufs/ffs/ffs_snapshot.c,v
retrieving revision 1.77
diff -u -r1.77 ffs_snapshot.c
--- ffs_snapshot.c	4 Jan 2004 04:08:34 -0000	1.77
+++ ffs_snapshot.c	12 Feb 2004 01:08:31 -0000
@@ -488,9 +488,10 @@
 	VI_LOCK(devvp);
 	snaphead = &devvp->v_rdev->si_snapshots;
 	if ((xp = TAILQ_FIRST(snaphead)) != NULL) {
-		VI_LOCK(vp);
-		vp->v_vnlock = ITOV(xp)->v_vnlock;
+		struct lock *lkp = ITOV(xp)->v_vnlock;
 		VI_UNLOCK(devvp);
+		VI_LOCK(vp);
+		vp->v_vnlock = lkp;
 	} else {
 		struct lock *lkp;
 
@@ -1793,9 +1794,10 @@
 		 */
 		VI_LOCK(devvp);
 		if ((xp = TAILQ_FIRST(snaphead)) != NULL) {
-			VI_LOCK(vp);
-			vp->v_vnlock = ITOV(xp)->v_vnlock;
+			struct lock *lkp = ITOV(xp)->v_vnlock;
 			VI_UNLOCK(devvp);
+			VI_LOCK(vp);
+			vp->v_vnlock = lkp;
 		} else {
 			struct lock *lkp;
 


-- 
Jun Kuriyama <kuriyama@imgsrc.co.jp> // IMG SRC, Inc.
             <kuriyama@FreeBSD.org> // FreeBSD Project



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?7m65ed2j50.wl>