[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