diff options
author | Luke Shumaker <lukeshu@lukeshu.com> | 2022-08-23 23:41:24 -0600 |
---|---|---|
committer | Luke Shumaker <lukeshu@lukeshu.com> | 2022-08-23 23:42:55 -0600 |
commit | 98c01381ed6dfc9085c946c2f0c720abad24ad10 (patch) | |
tree | 0b385b1e77207d66dd4603a5883a81abbd24ea52 /lib/btrfsprogs/btrfsinspect/rebuildmappings/scan.go | |
parent | 8608bd1db4c855e9f25f34f443802864859c14b6 (diff) |
Begone with allsums.go
Diffstat (limited to 'lib/btrfsprogs/btrfsinspect/rebuildmappings/scan.go')
-rw-r--r-- | lib/btrfsprogs/btrfsinspect/rebuildmappings/scan.go | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/lib/btrfsprogs/btrfsinspect/rebuildmappings/scan.go b/lib/btrfsprogs/btrfsinspect/rebuildmappings/scan.go index 6b4cbe7..5915e12 100644 --- a/lib/btrfsprogs/btrfsinspect/rebuildmappings/scan.go +++ b/lib/btrfsprogs/btrfsinspect/rebuildmappings/scan.go @@ -19,7 +19,12 @@ import ( "git.lukeshu.com/btrfs-progs-ng/lib/slices" ) -func ScanForExtents(ctx context.Context, fs *btrfs.FS, blockgroups map[btrfsvol.LogicalAddr]BlockGroup, sums AllSums) error { +func ScanForExtents(ctx context.Context, + fs *btrfs.FS, + blockgroups map[btrfsvol.LogicalAddr]BlockGroup, + physicalSums map[btrfsvol.DeviceID]btrfssum.SumRun[btrfsvol.PhysicalAddr], + logicalSums btrfssum.SumRunWithGaps[btrfsvol.LogicalAddr], +) error { dlog.Info(ctx, "Pairing up blockgroups and sums...") bgSums := make(map[btrfsvol.LogicalAddr]btrfssum.SumRunWithGaps[btrfsvol.LogicalAddr]) for i, bgLAddr := range maps.SortedKeys(blockgroups) { @@ -29,7 +34,7 @@ func ScanForExtents(ctx context.Context, fs *btrfs.FS, blockgroups map[btrfsvol. Size: blockgroup.Size, } for laddr := blockgroup.LAddr; laddr < blockgroup.LAddr.Add(blockgroup.Size); { - run, next, ok := sums.RunForLAddr(laddr) + run, next, ok := logicalSums.RunForAddr(laddr) if !ok { laddr = next continue @@ -63,7 +68,7 @@ func ScanForExtents(ctx context.Context, fs *btrfs.FS, blockgroups map[btrfsvol. continue } - if err := WalkUnmappedPhysicalRegions(ctx, sums, gaps, func(devID btrfsvol.DeviceID, gap btrfssum.SumRun[btrfsvol.PhysicalAddr]) error { + if err := WalkUnmappedPhysicalRegions(ctx, physicalSums, gaps, func(devID btrfsvol.DeviceID, gap btrfssum.SumRun[btrfsvol.PhysicalAddr]) error { matches, err := diskio.IndexAll[int64, btrfssum.ShortSum](gap, bgRun) if err != nil { return err @@ -114,7 +119,7 @@ func ScanForExtents(ctx context.Context, fs *btrfs.FS, blockgroups map[btrfsvol. dlog.Info(ctx, "Reverse-indexing remaining unmapped logical sums...") sum2laddrs := make(map[btrfssum.ShortSum][]btrfsvol.LogicalAddr) var numUnmappedBlocks int64 - if err := sums.WalkLogical(ctx, func(laddr btrfsvol.LogicalAddr, sum btrfssum.ShortSum) error { + if err := logicalSums.Walk(ctx, func(laddr btrfsvol.LogicalAddr, sum btrfssum.ShortSum) error { var dat [btrfssum.BlockSize]byte if _, err := fs.ReadAt(dat[:], laddr); err != nil { if errors.Is(err, btrfsvol.ErrCouldNotMap) { |