Skip to content

Commit

Permalink
maple_tree: simplify mas_leaf_set_meta()
Browse files Browse the repository at this point in the history
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 maple tree test suite.

Link: https://lkml.kernel.org/r/20231120070937.35481-6-zhangpeng.00@bytedance.com
Signed-off-by: Peng Zhang <zhangpeng.00@bytedance.com>
Reviewed-by: Liam R. Howlett <Liam.Howlett@oracle.com>
Cc: Dan Carpenter <dan.carpenter@linaro.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
  • Loading branch information
Peng Zhang authored and Andrew Morton committed Dec 12, 2023
1 parent 026b935 commit 330018f
Showing 1 changed file with 4 additions and 18 deletions.
22 changes: 4 additions & 18 deletions lib/maple_tree.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand Down Expand Up @@ -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);
}
}

Expand Down Expand Up @@ -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;

Expand Down

0 comments on commit 330018f

Please sign in to comment.