From 1793ed01f3d4a25d2144d3c766d917bc06f8be83 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Sun, 17 Jul 2022 15:29:17 -0600 Subject: handle gaps in blockgroups --- lib/btrfsprogs/btrfsinspect/scanforextents/scan.go | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'lib/btrfsprogs/btrfsinspect/scanforextents/scan.go') diff --git a/lib/btrfsprogs/btrfsinspect/scanforextents/scan.go b/lib/btrfsprogs/btrfsinspect/scanforextents/scan.go index 64e0871..ca3036a 100644 --- a/lib/btrfsprogs/btrfsinspect/scanforextents/scan.go +++ b/lib/btrfsprogs/btrfsinspect/scanforextents/scan.go @@ -20,7 +20,7 @@ import ( func ScanForExtents(ctx context.Context, fs *btrfs.FS, blockgroups map[btrfsvol.LogicalAddr]BlockGroup, sums AllSums) error { dlog.Info(ctx, "Pairing up blockgroups and sums...") - bgSums := make(map[btrfsvol.LogicalAddr][]SumRun[btrfsvol.LogicalAddr]) + bgSums := make(map[btrfsvol.LogicalAddr]SumRunWithGaps[btrfsvol.LogicalAddr]) for i, bgLAddr := range maps.SortedKeys(blockgroups) { blockgroup := blockgroups[bgLAddr] for laddr := blockgroup.LAddr; laddr < blockgroup.LAddr.Add(blockgroup.Size); { @@ -51,10 +51,9 @@ func ScanForExtents(ctx context.Context, fs *btrfs.FS, blockgroups map[btrfsvol. bgMatches := make(map[btrfsvol.LogicalAddr][]btrfsvol.QualifiedPhysicalAddr) for i, bgLAddr := range maps.SortedKeys(blockgroups) { bgRuns := bgSums[bgLAddr] - if len(bgRuns) != 1 { - // TODO(lukeshu): We aught to handle this rather than erroring and skipping - // it. - dlog.Errorf(ctx, "blockgroup laddr=%v has holes (%v runs)", bgLAddr, len(bgRuns)) + if len(bgRuns) == 0 { + dlog.Errorf(ctx, "... (%v/%v) blockgroup[laddr=%v] can't be matched because it has 0 runs", + i+1, len(bgSums), bgLAddr) continue } bgRun := bgRuns[0] -- cgit v1.2.3-2-g168b