[PATCH 5/5] maple_tree: Simplify mas_leaf_set_meta()
Liam R. Howlett
Liam.Howlett at Oracle.com
Fri Nov 10 07:01:53 PST 2023
* Peng Zhang <zhangpeng.00 at bytedance.com> [231109 07:43]:
> Now it seems that the incoming 'end' is already pointing to the last item,
> so we can simplify this function, considering only whether the last slot is
> being used. This has passed the test.
Can you be clear what test in the comment? I assume the maple tree test
suite?
Nice find.
>
> Signed-off-by: Peng Zhang <zhangpeng.00 at bytedance.com>
Besides the commit message:
Reviewed-by: Liam R. Howlett <Liam.Howlett at oracle.com>
> ---
> lib/maple_tree.c | 22 ++++------------------
> 1 file changed, 4 insertions(+), 18 deletions(-)
>
> diff --git a/lib/maple_tree.c b/lib/maple_tree.c
> index c66a7367d8ac..819dad199181 100644
> --- a/lib/maple_tree.c
> +++ b/lib/maple_tree.c
> @@ -1964,27 +1964,13 @@ static inline void mas_mab_cp(struct ma_state *mas, unsigned char mas_start,
>
> /*
> * mas_leaf_set_meta() - Set the metadata of a leaf if possible.
> - * @mas: The maple state
> * @node: The maple node
> - * @pivots: pointer to the maple node pivots
> * @mt: The maple type
> - * @end: The assumed end
> - *
> - * Note, end may be incremented within this function but not modified at the
> - * source. This is fine since the metadata is the last thing to be stored in a
> - * node during a write.
> + * @end: The node end
> */
> -static inline void mas_leaf_set_meta(struct ma_state *mas,
> - struct maple_node *node, unsigned long *pivots,
> +static inline void mas_leaf_set_meta(struct maple_node *node,
> enum maple_type mt, unsigned char end)
> {
> - /* There is no room for metadata already */
> - if (mt_pivots[mt] <= end)
> - return;
> -
> - if (pivots[end] && pivots[end] < mas->max)
> - end++;
> -
> if (end < mt_slots[mt] - 1)
> ma_set_meta(node, mt, 0, end);
> }
> @@ -2041,7 +2027,7 @@ static inline void mab_mas_cp(struct maple_big_node *b_node,
>
> ma_set_meta(node, mt, offset, end);
> } else {
> - mas_leaf_set_meta(mas, node, pivots, mt, end);
> + mas_leaf_set_meta(node, mt, end);
> }
> }
>
> @@ -3962,7 +3948,7 @@ static inline bool mas_wr_node_store(struct ma_wr_state *wr_mas,
> dst_pivots[new_end] = mas->max;
>
> done:
> - mas_leaf_set_meta(mas, newnode, dst_pivots, maple_leaf_64, new_end);
> + mas_leaf_set_meta(newnode, maple_leaf_64, new_end);
> if (in_rcu) {
> struct maple_enode *old_enode = mas->node;
>
> --
> 2.20.1
>
More information about the maple-tree
mailing list