From aebdf099d1b02394debd71a40b18050370ba7416 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Sun, 18 Dec 2022 00:58:08 -0700 Subject: rebuildnodes: Optimize memory access when indexing orphans --- lib/btrfsprogs/btrfsinspect/rebuildnodes/orphans.go | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'lib/btrfsprogs/btrfsinspect/rebuildnodes/orphans.go') diff --git a/lib/btrfsprogs/btrfsinspect/rebuildnodes/orphans.go b/lib/btrfsprogs/btrfsinspect/rebuildnodes/orphans.go index 5d3f031..89e9ad4 100644 --- a/lib/btrfsprogs/btrfsinspect/rebuildnodes/orphans.go +++ b/lib/btrfsprogs/btrfsinspect/rebuildnodes/orphans.go @@ -22,15 +22,19 @@ import ( ) func listRoots(graph graph.Graph, leaf btrfsvol.LogicalAddr) containers.Set[btrfsvol.LogicalAddr] { + ret := make(containers.Set[btrfsvol.LogicalAddr]) + _listRoots(ret, graph, leaf) + return ret +} + +func _listRoots(ret containers.Set[btrfsvol.LogicalAddr], graph graph.Graph, leaf btrfsvol.LogicalAddr) { kps := graph.EdgesTo[leaf] if len(kps) == 0 { - return containers.NewSet(leaf) + ret.Insert(leaf) } - ret := make(containers.Set[btrfsvol.LogicalAddr]) for _, kp := range kps { - ret.InsertFrom(listRoots(graph, kp.FromNode)) + _listRoots(ret, graph, kp.FromNode) } - return ret } type keyAndTree struct { -- cgit v1.2.3-2-g168b