diff options
Diffstat (limited to 'lib/btrfsprogs/btrfsinspect/scanforextents/scanforextents.go')
-rw-r--r-- | lib/btrfsprogs/btrfsinspect/scanforextents/scanforextents.go | 17 |
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 } |