summaryrefslogtreecommitdiffstats
path: root/sys/ufs
diff options
context:
space:
mode:
Diffstat (limited to 'sys/ufs')
-rw-r--r--sys/ufs/ffs/ffs_snapshot.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/sys/ufs/ffs/ffs_snapshot.c b/sys/ufs/ffs/ffs_snapshot.c
index 8a4d3b4..9436d1b 100644
--- a/sys/ufs/ffs/ffs_snapshot.c
+++ b/sys/ufs/ffs/ffs_snapshot.c
@@ -488,9 +488,10 @@ loop:
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 @@ ffs_snapshot_mount(mp)
*/
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;
OpenPOWER on IntegriCloud