summaryrefslogtreecommitdiffstats
path: root/sys/ufs
diff options
context:
space:
mode:
authormckusick <mckusick@FreeBSD.org>2002-12-18 19:50:28 +0000
committermckusick <mckusick@FreeBSD.org>2002-12-18 19:50:28 +0000
commit91195ac766d571bad54141725a1e63ac187d62ed (patch)
tree720780a095050e735496f0a0cb88bfa665444ccd /sys/ufs
parent5aac02aea3bb52645fccd2962ee68f01c5ae0bb3 (diff)
downloadFreeBSD-src-91195ac766d571bad54141725a1e63ac187d62ed.zip
FreeBSD-src-91195ac766d571bad54141725a1e63ac187d62ed.tar.gz
Fix corruption introduced in previous delta.
Reported by: Aurelien Nephtali <aurelien.nephtali@wanadoo.fr> Sponsored by: DARPA & NAI Labs.
Diffstat (limited to 'sys/ufs')
-rw-r--r--sys/ufs/ffs/ffs_snapshot.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/sys/ufs/ffs/ffs_snapshot.c b/sys/ufs/ffs/ffs_snapshot.c
index d64e4f2..7fe373d 100644
--- a/sys/ufs/ffs/ffs_snapshot.c
+++ b/sys/ufs/ffs/ffs_snapshot.c
@@ -983,15 +983,19 @@ mapacct_ufs1(vp, oldblkp, lastblkp, fs, lblkno, expungetype)
ufs1_daddr_t blkno;
struct inode *ip;
ino_t inum;
+ int acctit;
ip = VTOI(vp);
inum = ip->i_number;
+ if (lblkno == -1)
+ acctit = 0;
+ else
+ acctit = 1;
for ( ; oldblkp < lastblkp; oldblkp++, lblkno++) {
blkno = *oldblkp;
if (blkno == 0 || blkno == BLK_NOCOPY)
continue;
- if (lblkno != -1 && expungetype == BLK_SNAP &&
- blkno != BLK_SNAP)
+ if (acctit && expungetype == BLK_SNAP && blkno != BLK_SNAP)
*ip->i_snapblklist++ = lblkno;
if (blkno == BLK_SNAP)
blkno = blkstofrags(fs, lblkno);
@@ -1254,15 +1258,19 @@ mapacct_ufs2(vp, oldblkp, lastblkp, fs, lblkno, expungetype)
ufs2_daddr_t blkno;
struct inode *ip;
ino_t inum;
+ int acctit;
ip = VTOI(vp);
inum = ip->i_number;
+ if (lblkno == -1)
+ acctit = 0;
+ else
+ acctit = 1;
for ( ; oldblkp < lastblkp; oldblkp++, lblkno++) {
blkno = *oldblkp;
if (blkno == 0 || blkno == BLK_NOCOPY)
continue;
- if (lblkno != -1 && expungetype == BLK_SNAP &&
- blkno != BLK_SNAP)
+ if (acctit && expungetype == BLK_SNAP && blkno != BLK_SNAP)
*ip->i_snapblklist++ = lblkno;
if (blkno == BLK_SNAP)
blkno = blkstofrags(fs, lblkno);
OpenPOWER on IntegriCloud