From 94aa0ec3e9f7145cdf177ad6f6d3d8b7d5bdbef7 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Wed, 29 Mar 2023 10:00:18 -0600 Subject: btrfstree: Change the NodeSource API so that it can do caching --- cmd/btrfs-rec/inspect/rebuildtrees/scan.go | 6 +++--- cmd/btrfs-rec/inspect_lstrees.go | 4 +++- 2 files changed, 6 insertions(+), 4 deletions(-) (limited to 'cmd/btrfs-rec') diff --git a/cmd/btrfs-rec/inspect/rebuildtrees/scan.go b/cmd/btrfs-rec/inspect/rebuildtrees/scan.go index 86d3741..a6f9c7a 100644 --- a/cmd/btrfs-rec/inspect/rebuildtrees/scan.go +++ b/cmd/btrfs-rec/inspect/rebuildtrees/scan.go @@ -71,17 +71,17 @@ func ScanDevices(ctx context.Context, fs *btrfs.FS, nodeList []btrfsvol.LogicalA if err := ctx.Err(); err != nil { return ScanDevicesResult{}, err } - node, err := fs.ReadNode(ctx, laddr, btrfstree.NodeExpectations{ + node, err := fs.AcquireNode(ctx, laddr, btrfstree.NodeExpectations{ LAddr: containers.OptionalValue(laddr), }) if err != nil { - node.Free() + fs.ReleaseNode(node) return ScanDevicesResult{}, err } ret.insertNode(node) - node.Free() + fs.ReleaseNode(node) stats.N++ progressWriter.Set(stats) diff --git a/cmd/btrfs-rec/inspect_lstrees.go b/cmd/btrfs-rec/inspect_lstrees.go index 9639a2e..bdbdca2 100644 --- a/cmd/btrfs-rec/inspect_lstrees.go +++ b/cmd/btrfs-rec/inspect_lstrees.go @@ -106,10 +106,11 @@ func init() { continue } visitedNodes.Insert(laddr) - node, err := fs.ReadNode(ctx, laddr, btrfstree.NodeExpectations{ + node, err := fs.AcquireNode(ctx, laddr, btrfstree.NodeExpectations{ LAddr: containers.OptionalValue(laddr), }) if err != nil { + fs.ReleaseNode(node) treeErrCnt++ continue } @@ -117,6 +118,7 @@ func init() { typ := item.Key.ItemType treeItemCnt[typ]++ } + fs.ReleaseNode(node) } flush() } -- cgit v1.2.3-2-g168b