From b192a2c0a19133234972b491e9c06093b3d21358 Mon Sep 17 00:00:00 2001 From: Alexander Motin Date: Thu, 1 Jul 2021 11:32:31 -0400 Subject: [PATCH] Remove avl_size field from struct avl_tree This field is used only by illumos mdb. On other platforms it only increases the struct size from 32 to 40 bytes. For struct vdev_queue including 13 instances of avl_tree_t size means active cache lines. Keep the padding in user-space for now to not break the ABI. Reviewed-by: Brian Behlendorf Reviewed-by: Matthew Ahrens Signed-off-by: Alexander Motin Sponsored-By: iXsystems, Inc. Closes #12290 --- include/sys/avl_impl.h | 4 +++- module/avl/avl.c | 2 -- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/include/sys/avl_impl.h b/include/sys/avl_impl.h index f577ecd42f..c464a62a1c 100644 --- a/include/sys/avl_impl.h +++ b/include/sys/avl_impl.h @@ -147,7 +147,9 @@ struct avl_tree { int (*avl_compar)(const void *, const void *); size_t avl_offset; /* offsetof(type, avl_link_t field) */ ulong_t avl_numnodes; /* number of nodes in the tree */ - size_t avl_size; /* sizeof user type struct */ +#ifndef _KERNEL + size_t avl_pad; /* For backwards ABI compatibility. */ +#endif }; diff --git a/module/avl/avl.c b/module/avl/avl.c index 1a95092bc2..3d36d4c87e 100644 --- a/module/avl/avl.c +++ b/module/avl/avl.c @@ -875,7 +875,6 @@ avl_swap(avl_tree_t *tree1, avl_tree_t *tree2) ASSERT3P(tree1->avl_compar, ==, tree2->avl_compar); ASSERT3U(tree1->avl_offset, ==, tree2->avl_offset); - ASSERT3U(tree1->avl_size, ==, tree2->avl_size); temp_node = tree1->avl_root; temp_numnodes = tree1->avl_numnodes; @@ -903,7 +902,6 @@ avl_create(avl_tree_t *tree, int (*compar) (const void *, const void *), tree->avl_compar = compar; tree->avl_root = NULL; tree->avl_numnodes = 0; - tree->avl_size = size; tree->avl_offset = offset; }