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.go58
1 files changed, 1 insertions, 57 deletions
diff --git a/lib/btrfsprogs/btrfsinspect/rebuildnodes/orphans.go b/lib/btrfsprogs/btrfsinspect/rebuildnodes/orphans.go
index 89e9ad4..517070d 100644
--- a/lib/btrfsprogs/btrfsinspect/rebuildnodes/orphans.go
+++ b/lib/btrfsprogs/btrfsinspect/rebuildnodes/orphans.go
@@ -11,7 +11,6 @@ import (
"github.com/datawire/dlib/dlog"
- "git.lukeshu.com/btrfs-progs-ng/lib/btrfs/btrfsprim"
"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"
@@ -37,18 +36,6 @@ func _listRoots(ret containers.Set[btrfsvol.LogicalAddr], graph graph.Graph, lea
}
}
-type keyAndTree struct {
- btrfsprim.Key
- TreeID btrfsprim.ObjID
-}
-
-func (a keyAndTree) Cmp(b keyAndTree) int {
- if d := a.Key.Cmp(b.Key); d != 0 {
- return d
- }
- return containers.NativeCmp(a.TreeID, b.TreeID)
-}
-
type crawlStats struct {
DoneNodes int
TotalNodes int
@@ -61,20 +48,8 @@ func (s crawlStats) String() string {
s.DoneNodes, s.TotalNodes, s.FoundLeafs)
}
-type readStats struct {
- DoneLeafNodes int
- TotalLeafNodes int
-}
-
-func (s readStats) String() string {
- return fmt.Sprintf("... reading leafs %v%% (%v/%v)",
- int(100*float64(s.DoneLeafNodes)/float64(s.TotalLeafNodes)),
- s.DoneLeafNodes, s.TotalLeafNodes)
-}
-
func indexOrphans(ctx context.Context, fs diskio.File[btrfsvol.LogicalAddr], sb btrfstree.Superblock, graph graph.Graph) (
leaf2orphans map[btrfsvol.LogicalAddr]containers.Set[btrfsvol.LogicalAddr],
- key2leaf *containers.SortedMap[keyAndTree, btrfsvol.LogicalAddr],
err error,
) {
@@ -99,36 +74,5 @@ func indexOrphans(ctx context.Context, fs diskio.File[btrfsvol.LogicalAddr], sb
progress(len(graph.Nodes))
crawlProgressWriter.Done()
- key2leaf = new(containers.SortedMap[keyAndTree, btrfsvol.LogicalAddr])
- readProgressWriter := textui.NewProgress[readStats](ctx, dlog.LogLevelInfo, 1*time.Second)
- progress = func(done int) {
- readProgressWriter.Set(readStats{
- DoneLeafNodes: done,
- TotalLeafNodes: len(leaf2orphans),
- })
- }
- for i, laddr := range maps.SortedKeys(leaf2orphans) {
- progress(i)
- nodeRef, err := btrfstree.ReadNode[btrfsvol.LogicalAddr](fs, sb, laddr, btrfstree.NodeExpectations{
- LAddr: containers.Optional[btrfsvol.LogicalAddr]{OK: true, Val: laddr},
- Level: containers.Optional[uint8]{OK: true, Val: 0},
- })
- if err != nil {
- return nil, nil, err
- }
-
- for _, item := range nodeRef.Data.BodyLeaf {
- k := keyAndTree{
- Key: item.Key,
- TreeID: nodeRef.Data.Head.Owner,
- }
- if cur, ok := key2leaf.Load(k); !ok || graph.Nodes[cur].Generation < nodeRef.Data.Head.Generation {
- key2leaf.Store(k, laddr)
- }
- }
- }
- progress(len(leaf2orphans))
- readProgressWriter.Done()
-
- return leaf2orphans, key2leaf, nil
+ return leaf2orphans, nil
}