From 82cbe05afeecd669d4a0af99fef0f3f4022521ff Mon Sep 17 00:00:00 2001 From: tegge Date: Mon, 15 May 2006 23:18:49 +0000 Subject: Copy last block on file system again after file system has been suspended. Obtained from: NetBSD --- sys/ufs/ffs/ffs_snapshot.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'sys/ufs/ffs') diff --git a/sys/ufs/ffs/ffs_snapshot.c b/sys/ufs/ffs/ffs_snapshot.c index 0c011ea..3b1f99b 100644 --- a/sys/ufs/ffs/ffs_snapshot.c +++ b/sys/ufs/ffs/ffs_snapshot.c @@ -424,6 +424,17 @@ restart: } if (collectsnapstats) nanotime(&starttime); + + /* The last block might have changed. Copy it again to be sure. */ + error = UFS_BALLOC(vp, lblktosize(fs, (off_t)(numblks - 1)), + fs->fs_bsize, KERNCRED, BA_CLRBUF, &bp); + if (error != 0) + goto out1; + error = readblock(vp, bp, numblks - 1); + bp->b_flags |= B_VALIDSUSPWRT; + bawrite(bp); + if (error != 0) + goto out1; /* * First, copy all the cylinder group maps that have changed. */ -- cgit v1.1