diff options
author | Luke Shumaker <lukeshu@lukeshu.com> | 2022-07-17 15:29:17 -0600 |
---|---|---|
committer | Luke Shumaker <lukeshu@lukeshu.com> | 2022-07-17 15:29:17 -0600 |
commit | 1793ed01f3d4a25d2144d3c766d917bc06f8be83 (patch) | |
tree | 0a66e2c7f80720cc02fc3c2f4a5b8ff2437e8d8e /lib/btrfsprogs/btrfsinspect/scanforextents/scan.go | |
parent | 94ba50701819889814583bd593581f1ca69ebaeb (diff) |
handle gaps in blockgroups
Diffstat (limited to 'lib/btrfsprogs/btrfsinspect/scanforextents/scan.go')
-rw-r--r-- | lib/btrfsprogs/btrfsinspect/scanforextents/scan.go | 9 |
1 files changed, 4 insertions, 5 deletions
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] |