summaryrefslogtreecommitdiff
path: root/lib/btrfsprogs/btrfsinspect/rebuildnodes/orphans.go
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@lukeshu.com>2022-12-21 04:30:56 -0700
committerLuke Shumaker <lukeshu@lukeshu.com>2022-12-22 02:40:51 -0700
commit7620e1948a4d1e17458d8cfc9ed306bb774a3274 (patch)
treeb65761ee1bb3e1651038d1e2bfeb4e99c33dcf85 /lib/btrfsprogs/btrfsinspect/rebuildnodes/orphans.go
parent30be1eacbe4ff253c82c6e6163234dc20b4de550 (diff)
rebuildnodes: Migrate to the new rebuilt-btrees system
Diffstat (limited to 'lib/btrfsprogs/btrfsinspect/rebuildnodes/orphans.go')
-rw-r--r--lib/btrfsprogs/btrfsinspect/rebuildnodes/orphans.go78
1 files changed, 0 insertions, 78 deletions
diff --git a/lib/btrfsprogs/btrfsinspect/rebuildnodes/orphans.go b/lib/btrfsprogs/btrfsinspect/rebuildnodes/orphans.go
deleted file mode 100644
index 517070d..0000000
--- a/lib/btrfsprogs/btrfsinspect/rebuildnodes/orphans.go
+++ /dev/null
@@ -1,78 +0,0 @@
-// Copyright (C) 2022 Luke Shumaker <lukeshu@lukeshu.com>
-//
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-package rebuildnodes
-
-import (
- "context"
- "fmt"
- "time"
-
- "github.com/datawire/dlib/dlog"
-
- "git.lukeshu.com/btrfs-progs-ng/lib/btrfs/btrfstree"
- "git.lukeshu.com/btrfs-progs-ng/lib/btrfs/btrfsvol"
- "git.lukeshu.com/btrfs-progs-ng/lib/btrfsprogs/btrfsinspect/rebuildnodes/graph"
- "git.lukeshu.com/btrfs-progs-ng/lib/containers"
- "git.lukeshu.com/btrfs-progs-ng/lib/diskio"
- "git.lukeshu.com/btrfs-progs-ng/lib/maps"
- "git.lukeshu.com/btrfs-progs-ng/lib/textui"
-)
-
-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 {
- ret.Insert(leaf)
- }
- for _, kp := range kps {
- _listRoots(ret, graph, kp.FromNode)
- }
-}
-
-type crawlStats struct {
- DoneNodes int
- TotalNodes int
- FoundLeafs int
-}
-
-func (s crawlStats) String() string {
- return fmt.Sprintf("... indexing orphaned leafs %v%% (%v/%v); found %d leaf nodes",
- int(100*float64(s.DoneNodes)/float64(s.TotalNodes)),
- s.DoneNodes, s.TotalNodes, s.FoundLeafs)
-}
-
-func indexOrphans(ctx context.Context, fs diskio.File[btrfsvol.LogicalAddr], sb btrfstree.Superblock, graph graph.Graph) (
- leaf2orphans map[btrfsvol.LogicalAddr]containers.Set[btrfsvol.LogicalAddr],
- err error,
-) {
-
- crawlProgressWriter := textui.NewProgress[crawlStats](ctx, dlog.LogLevelInfo, 1*time.Second)
- progress := func(done int) {
- crawlProgressWriter.Set(crawlStats{
- DoneNodes: done,
- TotalNodes: len(graph.Nodes),
- FoundLeafs: len(leaf2orphans),
- })
- }
- leaf2orphans = make(map[btrfsvol.LogicalAddr]containers.Set[btrfsvol.LogicalAddr])
- for i, node := range maps.SortedKeys(graph.Nodes) {
- progress(i)
- if graph.Nodes[node].Level != 0 {
- continue
- }
- if roots := listRoots(graph, node); !roots.Has(0) {
- leaf2orphans[node] = roots
- }
- }
- progress(len(graph.Nodes))
- crawlProgressWriter.Done()
-
- return leaf2orphans, nil
-}