diff options
author | Luke Shumaker <lukeshu@lukeshu.com> | 2022-08-23 23:43:50 -0600 |
---|---|---|
committer | Luke Shumaker <lukeshu@lukeshu.com> | 2022-08-23 23:43:50 -0600 |
commit | 6f73ced9a723aa68694593ebc1bb4e1e621b2f2d (patch) | |
tree | 9c44158750eb7b26d0807e35e8c15ade6ca06fc5 /lib/btrfsprogs/btrfsinspect/rebuildmappings/scan.go | |
parent | 98c01381ed6dfc9085c946c2f0c720abad24ad10 (diff) |
Factor out SumsForLogicalRegion
Diffstat (limited to 'lib/btrfsprogs/btrfsinspect/rebuildmappings/scan.go')
-rw-r--r-- | lib/btrfsprogs/btrfsinspect/rebuildmappings/scan.go | 24 |
1 files changed, 1 insertions, 23 deletions
diff --git a/lib/btrfsprogs/btrfsinspect/rebuildmappings/scan.go b/lib/btrfsprogs/btrfsinspect/rebuildmappings/scan.go index 5915e12..69b783d 100644 --- a/lib/btrfsprogs/btrfsinspect/rebuildmappings/scan.go +++ b/lib/btrfsprogs/btrfsinspect/rebuildmappings/scan.go @@ -16,7 +16,6 @@ import ( "git.lukeshu.com/btrfs-progs-ng/lib/containers" "git.lukeshu.com/btrfs-progs-ng/lib/diskio" "git.lukeshu.com/btrfs-progs-ng/lib/maps" - "git.lukeshu.com/btrfs-progs-ng/lib/slices" ) func ScanForExtents(ctx context.Context, @@ -29,28 +28,7 @@ func ScanForExtents(ctx context.Context, bgSums := make(map[btrfsvol.LogicalAddr]btrfssum.SumRunWithGaps[btrfsvol.LogicalAddr]) for i, bgLAddr := range maps.SortedKeys(blockgroups) { blockgroup := blockgroups[bgLAddr] - runs := btrfssum.SumRunWithGaps[btrfsvol.LogicalAddr]{ - Addr: blockgroup.LAddr, - Size: blockgroup.Size, - } - for laddr := blockgroup.LAddr; laddr < blockgroup.LAddr.Add(blockgroup.Size); { - run, next, ok := logicalSums.RunForAddr(laddr) - if !ok { - laddr = next - continue - } - off := int((laddr-run.Addr)/btrfssum.BlockSize) * run.ChecksumSize - deltaAddr := slices.Min[btrfsvol.AddrDelta]( - blockgroup.Size-laddr.Sub(blockgroup.LAddr), - btrfsvol.AddrDelta((len(run.Sums)-off)/run.ChecksumSize)*btrfssum.BlockSize) - deltaOff := int(deltaAddr/btrfssum.BlockSize) * run.ChecksumSize - runs.Runs = append(runs.Runs, btrfssum.SumRun[btrfsvol.LogicalAddr]{ - ChecksumSize: run.ChecksumSize, - Addr: laddr, - Sums: run.Sums[off : off+deltaOff], - }) - laddr = laddr.Add(deltaAddr) - } + runs := SumsForLogicalRegion(logicalSums, blockgroup.LAddr, blockgroup.Size) bgSums[blockgroup.LAddr] = runs dlog.Infof(ctx, "... (%v/%v) blockgroup[laddr=%v] has %v runs covering %v%%", i+1, len(blockgroups), bgLAddr, len(runs.Runs), int(100*runs.PctFull())) |