summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/kern/vfs_vnops.c3
-rw-r--r--sys/sys/vnode.h1
-rw-r--r--sys/ufs/ffs/ffs_snapshot.c2
3 files changed, 4 insertions, 2 deletions
diff --git a/sys/kern/vfs_vnops.c b/sys/kern/vfs_vnops.c
index cf49ecb..bbe837a 100644
--- a/sys/kern/vfs_vnops.c
+++ b/sys/kern/vfs_vnops.c
@@ -1667,7 +1667,8 @@ vfs_write_resume_flags(struct mount *mp, int flags)
mp->mnt_writeopcount++;
}
MNT_IUNLOCK(mp);
- VFS_SUSP_CLEAN(mp);
+ if ((flags & VR_NO_SUSPCLR) == 0)
+ VFS_SUSP_CLEAN(mp);
} else if ((flags & VR_START_WRITE) != 0) {
MNT_REF(mp);
vn_start_write_locked(mp, 0);
diff --git a/sys/sys/vnode.h b/sys/sys/vnode.h
index 4371b40..f487f37 100644
--- a/sys/sys/vnode.h
+++ b/sys/sys/vnode.h
@@ -393,6 +393,7 @@ extern int vttoif_tab[];
#define V_XSLEEP 0x0004 /* vn_start_write: just return after sleep */
#define VR_START_WRITE 0x0001 /* vfs_write_resume: start write atomically */
+#define VR_NO_SUSPCLR 0x0002 /* vfs_write_resume: do not clear suspension */
#define VREF(vp) vref(vp)
diff --git a/sys/ufs/ffs/ffs_snapshot.c b/sys/ufs/ffs/ffs_snapshot.c
index 25ad79c..5f67ae5 100644
--- a/sys/ufs/ffs/ffs_snapshot.c
+++ b/sys/ufs/ffs/ffs_snapshot.c
@@ -687,7 +687,7 @@ out1:
/*
* Resume operation on filesystem.
*/
- vfs_write_resume_flags(vp->v_mount, VR_START_WRITE);
+ vfs_write_resume_flags(vp->v_mount, VR_START_WRITE | VR_NO_SUSPCLR);
if (collectsnapstats && starttime.tv_sec > 0) {
nanotime(&endtime);
timespecsub(&endtime, &starttime);
OpenPOWER on IntegriCloud