From 74a82894df9bdef19d321611255b7923f9f25aff Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Sun, 2 Apr 2023 18:36:11 -0600 Subject: btrfsutil: GraphNode: Have .MinItem and .MaxItem work on interior nodes too --- lib/btrfsutil/graph_loops.go | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'lib/btrfsutil/graph_loops.go') diff --git a/lib/btrfsutil/graph_loops.go b/lib/btrfsutil/graph_loops.go index d613481..2819482 100644 --- a/lib/btrfsutil/graph_loops.go +++ b/lib/btrfsutil/graph_loops.go @@ -24,13 +24,13 @@ func (g Graph) renderNode(node btrfsvol.LogicalAddr) []string { fmt.Sprintf(" gen: %v,", nodeData.Generation), fmt.Sprintf(" num_items: %v,", len(nodeData.Items)), fmt.Sprintf(" min_item: {%d,%v,%d},", - nodeData.MinItem().ObjectID, - nodeData.MinItem().ItemType, - nodeData.MinItem().Offset), + nodeData.MinItem(g).ObjectID, + nodeData.MinItem(g).ItemType, + nodeData.MinItem(g).Offset), fmt.Sprintf(" max_item: {%d,%v,%d}}", - nodeData.MaxItem().ObjectID, - nodeData.MaxItem().ItemType, - nodeData.MaxItem().Offset), + nodeData.MaxItem(g).ObjectID, + nodeData.MaxItem(g).ItemType, + nodeData.MaxItem(g).Offset), } } else if nodeErr, ok := g.BadNodes[node]; ok { return []string{ @@ -59,7 +59,7 @@ func (g Graph) renderEdge(kp GraphEdge) []string { if toNode, ok := g.Nodes[kp.ToNode]; !ok { err = g.BadNodes[kp.ToNode] } else { - err = checkNodeExpectations(kp, toNode) + err = g.loopCheckNodeExpectations(kp, toNode) } if err != nil { c := strings.Repeat(" ", len(a)-1) @@ -110,7 +110,7 @@ func (g Graph) renderLoop(stack []btrfsvol.LogicalAddr) []string { return lines } -func checkNodeExpectations(kp GraphEdge, toNode GraphNode) error { +func (g Graph) loopCheckNodeExpectations(kp GraphEdge, toNode GraphNode) error { var errs derror.MultiError if toNode.Level != kp.ToLevel { errs = append(errs, fmt.Errorf("kp.level=%v != node.level=%v", @@ -123,9 +123,9 @@ func checkNodeExpectations(kp GraphEdge, toNode GraphNode) error { switch { case len(toNode.Items) == 0: errs = append(errs, fmt.Errorf("node.num_items=0")) - case kp.ToKey != (btrfsprim.Key{}) && toNode.MinItem() != kp.ToKey: + case kp.ToKey != (btrfsprim.Key{}) && toNode.MinItem(g) != kp.ToKey: errs = append(errs, fmt.Errorf("kp.key=%v != node.items[0].key=%v", - kp.ToKey, toNode.MinItem())) + kp.ToKey, toNode.MinItem(g))) } if len(errs) > 0 { return errs -- cgit v1.2.3-54-g00ecf