summaryrefslogtreecommitdiffstats
path: root/sys/ufs/ffs/ffs_snapshot.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/ufs/ffs/ffs_snapshot.c')
-rw-r--r--sys/ufs/ffs/ffs_snapshot.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/sys/ufs/ffs/ffs_snapshot.c b/sys/ufs/ffs/ffs_snapshot.c
index 1c66031..e5c825d 100644
--- a/sys/ufs/ffs/ffs_snapshot.c
+++ b/sys/ufs/ffs/ffs_snapshot.c
@@ -456,9 +456,12 @@ loop:
panic("ffs_snapshot: %d already on list", ip->i_number);
snaphead = &ip->i_devvp->v_rdev->si_snapshots;
TAILQ_INSERT_TAIL(snaphead, ip, i_nextsnap);
+
+ ASSERT_VOP_LOCKED(ip->i_devvp, "ffs_snapshot devvp");
ip->i_devvp->v_rdev->si_copyonwrite = ffs_copyonwrite;
- ip->i_devvp->v_flag |= VCOPYONWRITE;
- vp->v_flag |= VSYSTEM;
+ ip->i_devvp->v_vflag |= VV_COPYONWRITE;
+ ASSERT_VOP_LOCKED(vp, "ffs_snapshot vp");
+ vp->v_vflag |= VV_SYSTEM;
out1:
/*
* Resume operation on filesystem.
@@ -1225,9 +1228,10 @@ ffs_snapremove(vp)
devvp = ip->i_devvp;
TAILQ_REMOVE(&devvp->v_rdev->si_snapshots, ip, i_nextsnap);
ip->i_nextsnap.tqe_prev = 0;
+ ASSERT_VOP_LOCKED(devvp, "ffs_snapremove devvp");
if (TAILQ_FIRST(&devvp->v_rdev->si_snapshots) == 0) {
devvp->v_rdev->si_copyonwrite = 0;
- devvp->v_flag &= ~VCOPYONWRITE;
+ devvp->v_vflag &= ~VV_COPYONWRITE;
}
}
/*
@@ -1537,9 +1541,10 @@ ffs_snapshot_mount(mp)
ip->i_number);
else
TAILQ_INSERT_TAIL(snaphead, ip, i_nextsnap);
- vp->v_flag |= VSYSTEM;
+ vp->v_vflag |= VV_SYSTEM;
ump->um_devvp->v_rdev->si_copyonwrite = ffs_copyonwrite;
- ump->um_devvp->v_flag |= VCOPYONWRITE;
+ ASSERT_VOP_LOCKED(ump->um_devvp, "ffs_snapshot_mount");
+ ump->um_devvp->v_vflag |= VV_COPYONWRITE;
VOP_UNLOCK(vp, 0, td);
}
}
@@ -1561,8 +1566,9 @@ ffs_snapshot_unmount(mp)
if (xp->i_effnlink > 0)
vrele(ITOV(xp));
}
+ ASSERT_VOP_LOCKED(ump->um_devvp, "ffs_snapshot_unmount");
ump->um_devvp->v_rdev->si_copyonwrite = 0;
- ump->um_devvp->v_flag &= ~VCOPYONWRITE;
+ ump->um_devvp->v_vflag &= ~VV_COPYONWRITE;
}
/*
OpenPOWER on IntegriCloud