summaryrefslogtreecommitdiff
path: root/lib/btrfsprogs/btrfsinspect/rebuildnodes/orphans.go
diff options
context:
space:
mode:
Diffstat (limited to 'lib/btrfsprogs/btrfsinspect/rebuildnodes/orphans.go')
-rw-r--r--lib/btrfsprogs/btrfsinspect/rebuildnodes/orphans.go12
1 files changed, 8 insertions, 4 deletions
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 {