From d93d98d98f308884d44ccad5f2483dcced1331c1 Mon Sep 17 00:00:00 2001 From: Tor Egge Date: Mon, 15 May 2006 23:18:49 +0000 Subject: [PATCH] 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(+) diff --git a/sys/ufs/ffs/ffs_snapshot.c b/sys/ufs/ffs/ffs_snapshot.c index 0c011eaafb34..3b1f99bf78b0 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. */