Message ID | 158904181736.982941.3404117959961230293.stgit@magnolia (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | xfs_repair: catch things that xfs_check misses | expand |
On Sat, May 09, 2020 at 09:30:17AM -0700, Darrick J. Wong wrote: > From: Darrick J. Wong <darrick.wong@oracle.com> > > The bnobt and refcountbt scanners attempt to check that records are in > the correct order. However, the lastblock variable in both functions > ought to be set to the end of the previous record (instead of the start) > because otherwise we fail to catch overlapping records, which are not > allowed in either btree type. > > Found by running xfs/410 with recs[1].blockcount = middlebit. Looks good, Reviewed-by: Christoph Hellwig <hch@lst.de>
diff --git a/repair/scan.c b/repair/scan.c index 1ddb5763..2d156d64 100644 --- a/repair/scan.c +++ b/repair/scan.c @@ -699,7 +699,7 @@ _("%s freespace btree block claimed (state %d), agno %d, bno %d, suspect %d\n"), "out-of-order bno btree record %d (%u %u) block %u/%u\n"), i, b, len, agno, bno); } else { - lastblock = b; + lastblock = end - 1; } } else { agcnts->fdblocks += len; @@ -1396,7 +1396,7 @@ _("extent (%u/%u) len %u claimed, state is %d\n"), "out-of-order %s btree record %d (%u %u) block %u/%u\n"), name, i, b, len, agno, bno); } else { - lastblock = b; + lastblock = end - 1; } /* Is this record mergeable with the last one? */