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>
