diff options
author | Luke Shumaker <lukeshu@lukeshu.com> | 2023-04-14 07:19:45 -0600 |
---|---|---|
committer | Luke Shumaker <lukeshu@lukeshu.com> | 2023-04-14 07:19:45 -0600 |
commit | c2c6fa42233cd3911b81bb9449329816f645cec5 (patch) | |
tree | c8d3663a5d1d03f033a0c133983061bc2ef61418 /lib/btrfsutil/graph.go | |
parent | 163e8a157ab812a8eafa3a1d2d2b8c0e45431559 (diff) | |
parent | 9a63a26b4e23a8977a9558b7e9a79792eb5b6d18 (diff) |
Merge branch 'lukeshu/rebuilt-v2-pt1-naive'
Diffstat (limited to 'lib/btrfsutil/graph.go')
-rw-r--r-- | lib/btrfsutil/graph.go | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/lib/btrfsutil/graph.go b/lib/btrfsutil/graph.go index 860a49c..1b55642 100644 --- a/lib/btrfsutil/graph.go +++ b/lib/btrfsutil/graph.go @@ -24,12 +24,17 @@ import ( "git.lukeshu.com/btrfs-progs-ng/lib/textui" ) +type KeyAndSize struct { + Key btrfsprim.Key + Size uint32 +} + type GraphNode struct { Addr btrfsvol.LogicalAddr Level uint8 Generation btrfsprim.Generation Owner btrfsprim.ObjID - Items []btrfsprim.Key + Items []KeyAndSize } func (n GraphNode) NumItems(g Graph) int { @@ -47,7 +52,7 @@ func (n GraphNode) MinItem(g Graph) btrfsprim.Key { } switch n.Level { case 0: - return n.Items[0] + return n.Items[0].Key default: return g.EdgesFrom[n.Addr][0].ToKey } @@ -59,7 +64,7 @@ func (n GraphNode) MaxItem(g Graph) btrfsprim.Key { } switch n.Level { case 0: - return n.Items[len(n.Items)-1] + return n.Items[len(n.Items)-1].Key default: return g.EdgesFrom[n.Addr][len(g.EdgesFrom[n.Addr])-1].ToKey } @@ -225,11 +230,13 @@ func (g Graph) InsertNode(node *btrfstree.Node) { } } kps := make([]GraphEdge, 0, cnt) - keys := make([]btrfsprim.Key, len(node.BodyLeaf)) - nodeData.Items = keys + nodeData.Items = make([]KeyAndSize, len(node.BodyLeaf)) g.Nodes[node.Head.Addr] = nodeData for i, item := range node.BodyLeaf { - keys[i] = item.Key + nodeData.Items[i] = KeyAndSize{ + Key: item.Key, + Size: item.BodySize, + } if itemBody, ok := item.Body.(*btrfsitem.Root); ok { kps = append(kps, GraphEdge{ FromRoot: node.Head.Addr, |