From e46cbc7ee7f3a2b93bd1bdf02e1eb95b98100f57 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Tue, 28 Feb 2023 13:10:16 -0700 Subject: misc: btrfsutil: Shrink the size of GraphNode --- lib/btrfsutil/graph.go | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) (limited to 'lib/btrfsutil/graph.go') diff --git a/lib/btrfsutil/graph.go b/lib/btrfsutil/graph.go index 8debe9d..9e453eb 100644 --- a/lib/btrfsutil/graph.go +++ b/lib/btrfsutil/graph.go @@ -27,20 +27,31 @@ type GraphNode struct { Level uint8 Generation btrfsprim.Generation Owner btrfsprim.ObjID - NumItems uint32 - MinItem btrfsprim.Key - MaxItem btrfsprim.Key Items []btrfsprim.Key } +func (n GraphNode) MinItem() btrfsprim.Key { + if len(n.Items) == 0 { + return btrfsprim.Key{} + } + return n.Items[0] +} + +func (n GraphNode) MaxItem() btrfsprim.Key { + if len(n.Items) == 0 { + return btrfsprim.Key{} + } + return n.Items[len(n.Items)-1] +} + func (n GraphNode) String() string { if reflect.ValueOf(n).IsZero() { return "{}" } return fmt.Sprintf(`{lvl:%v, gen:%v, tree:%v, cnt:%v, min:(%v,%v,%v), max:(%v,%v,%v)}`, - n.Level, n.Generation, n.Owner, n.NumItems, - n.MinItem.ObjectID, n.MinItem.ItemType, n.MinItem.Offset, - n.MaxItem.ObjectID, n.MaxItem.ItemType, n.MaxItem.Offset) + n.Level, n.Generation, n.Owner, len(n.Items), + n.MinItem().ObjectID, n.MinItem().ItemType, n.MinItem().Offset, + n.MaxItem().ObjectID, n.MaxItem().ItemType, n.MaxItem().Offset) } type GraphEdge struct { @@ -143,9 +154,6 @@ func (g Graph) InsertNode(nodeRef *diskio.Ref[btrfsvol.LogicalAddr, btrfstree.No Level: nodeRef.Data.Head.Level, Generation: nodeRef.Data.Head.Generation, Owner: nodeRef.Data.Head.Owner, - NumItems: nodeRef.Data.Head.NumItems, - MinItem: discardOK(nodeRef.Data.MinItem()), - MaxItem: discardOK(nodeRef.Data.MaxItem()), } if nodeRef.Data.Head.Level == 0 { @@ -256,7 +264,3 @@ func (g Graph) FinalCheck(ctx context.Context, fs diskio.File[btrfsvol.LogicalAd return nil } - -func discardOK[T any](val T, _ bool) T { - return val -} -- cgit v1.2.3-2-g168b