diff options
Diffstat (limited to 'lib/btrfsprogs/btrfsinspect/rebuildnodes/treeancestors.go')
-rw-r--r-- | lib/btrfsprogs/btrfsinspect/rebuildnodes/treeancestors.go | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/lib/btrfsprogs/btrfsinspect/rebuildnodes/treeancestors.go b/lib/btrfsprogs/btrfsinspect/rebuildnodes/treeancestors.go index 2e1d856..c396a13 100644 --- a/lib/btrfsprogs/btrfsinspect/rebuildnodes/treeancestors.go +++ b/lib/btrfsprogs/btrfsinspect/rebuildnodes/treeancestors.go @@ -5,11 +5,15 @@ package rebuildnodes import ( + "context" + + //"github.com/datawire/dlib/dlog" + "git.lukeshu.com/btrfs-progs-ng/lib/btrfs/btrfsprim" "git.lukeshu.com/btrfs-progs-ng/lib/containers" ) -func getTreeAncestors(scanData scanResult) map[btrfsprim.ObjID]containers.Set[btrfsprim.ObjID] { +func getTreeAncestors(ctx context.Context, scanData scanResult) map[btrfsprim.ObjID]containers.Set[btrfsprim.ObjID] { treeAncestors := make(map[btrfsprim.ObjID]containers.Set[btrfsprim.ObjID]) for laddr, node := range scanData.Nodes { @@ -17,7 +21,13 @@ func getTreeAncestors(scanData scanResult) map[btrfsprim.ObjID]containers.Set[bt treeAncestors[node.Owner] = make(containers.Set[btrfsprim.ObjID]) } for _, edge := range scanData.EdgesTo[laddr] { - treeAncestors[node.Owner].Insert(edge.FromTree) + if edge.FromTree != node.Owner { + if err := checkNodeExpectations(*edge, node); err != nil { + //dlog.Errorf(ctx, "... ignoring keypointer %v because %v", edge.String(), err) + } else { + treeAncestors[node.Owner].Insert(edge.FromTree) + } + } } } |