summaryrefslogtreecommitdiff
path: root/lib/btrfsprogs/btrfsinspect/scanforextents/scanforextents.go
diff options
context:
space:
mode:
Diffstat (limited to 'lib/btrfsprogs/btrfsinspect/scanforextents/scanforextents.go')
-rw-r--r--lib/btrfsprogs/btrfsinspect/scanforextents/scanforextents.go17
1 files changed, 13 insertions, 4 deletions
diff --git a/lib/btrfsprogs/btrfsinspect/scanforextents/scanforextents.go b/lib/btrfsprogs/btrfsinspect/scanforextents/scanforextents.go
index 5e7792e..72c9201 100644
--- a/lib/btrfsprogs/btrfsinspect/scanforextents/scanforextents.go
+++ b/lib/btrfsprogs/btrfsinspect/scanforextents/scanforextents.go
@@ -29,6 +29,7 @@ func ScanForExtents(ctx context.Context, fs *btrfs.FS, blockGroups *BlockGroupTr
return nil
}
runtime.GC()
+ dlog.Info(ctx, "...GC'd")
devs := fs.LV.PhysicalVolumes()
gaps := ListPhysicalGaps(fs)
@@ -122,10 +123,18 @@ func (em *ExtentMappings) init() error {
func (em *ExtentMappings) logicalSum(laddr btrfsvol.LogicalAddr) (shortSum, error) {
entry, ok := em.cacheLogical.Get(laddr)
if !ok {
- sum, err := LookupCSum(em.InFS, em.alg, laddr)
- entry.Sum = shortSum(sum[:em.alg.Size()])
- entry.Err = err
- em.cacheLogical.Add(laddr, entry)
+ sums, err := LookupCSum(em.InFS, em.alg, laddr)
+ if err != nil {
+ entry.Err = err
+ em.cacheLogical.Add(laddr, entry)
+ } else {
+ for laddr, sum := range sums {
+ entry.Sum = shortSum(sum[:em.alg.Size()])
+ em.cacheLogical.Add(laddr, entry)
+ }
+ sum := sums[laddr]
+ entry.Sum = shortSum(sum[:em.alg.Size()])
+ }
}
return entry.Sum, entry.Err
}