Skip to content

Commit

Permalink
maple_tree: remove node allocations from various write helper functions
Browse files Browse the repository at this point in the history
These write helper functions are all called from store paths which
preallocate enough nodes that will be needed for the write. There is no
more need to allocate within the functions themselves.

Link: https://lkml.kernel.org/r/[email protected]
Reviewed-by: Liam R. Howlett <[email protected]>
Signed-off-by: Sidhartha Kumar <[email protected]>
Cc: Matthew Wilcox (Oracle) <[email protected]>
Cc: Suren Baghdasaryan <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
  • Loading branch information
sidkumar99 authored and akpm00 committed Sep 2, 2024
1 parent 4037d44 commit 9155e84
Showing 1 changed file with 0 additions and 27 deletions.
27 changes: 0 additions & 27 deletions lib/maple_tree.c
Original file line number Diff line number Diff line change
Expand Up @@ -2976,9 +2976,6 @@ static inline int mas_rebalance(struct ma_state *mas,
* tries to combine the data in the same way. If one node contains the
* entire range of the tree, then that node is used as a new root node.
*/
mas_node_count(mas, empty_count * 2 - 1);
if (mas_is_err(mas))
return 0;

mast.orig_l = &l_mas;
mast.orig_r = &r_mas;
Expand Down Expand Up @@ -3029,11 +3026,6 @@ static inline void mas_destroy_rebalance(struct ma_state *mas, unsigned char end

/* set up node. */
if (in_rcu) {
/* Allocate for both left and right as well as parent. */
mas_node_count(mas, 3);
if (mas_is_err(mas))
return;

newnode = mas_pop_node(mas);
} else {
newnode = &reuse;
Expand Down Expand Up @@ -3341,10 +3333,6 @@ static int mas_split(struct ma_state *mas, struct maple_big_node *b_node)

trace_ma_op(__func__, mas);
mas->depth = mas_mt_height(mas);
/* Allocation failures will happen early. */
mas_node_count(mas, 1 + mas->depth * 2);
if (mas_is_err(mas))
return 0;

mast.l = &l_mas;
mast.r = &r_mas;
Expand Down Expand Up @@ -3427,10 +3415,6 @@ static inline int mas_root_expand(struct ma_state *mas, void *entry)
unsigned long *pivots;
int slot = 0;

mas_node_count(mas, 1);
if (unlikely(mas_is_err(mas)))
return 0;

node = mas_pop_node(mas);
pivots = ma_pivots(node, type);
slots = ma_slots(node, type);
Expand Down Expand Up @@ -3699,10 +3683,6 @@ static inline int mas_new_root(struct ma_state *mas, void *entry)
goto done;
}

mas_node_count(mas, 1);
if (mas_is_err(mas))
return 0;

node = mas_pop_node(mas);
pivots = ma_pivots(node, type);
slots = ma_slots(node, type);
Expand Down Expand Up @@ -3765,9 +3745,6 @@ static noinline int mas_wr_spanning_store(struct ma_wr_state *wr_mas)
* entries per level plus a new root.
*/
height = mas_mt_height(mas);
mas_node_count(mas, 1 + height * 3);
if (mas_is_err(mas))
return 0;

/*
* Set up right side. Need to get to the next offset after the spanning
Expand Down Expand Up @@ -3851,10 +3828,6 @@ static inline bool mas_wr_node_store(struct ma_wr_state *wr_mas,

/* set up node. */
if (in_rcu) {
mas_node_count(mas, 1);
if (mas_is_err(mas))
return false;

newnode = mas_pop_node(mas);
} else {
memset(&reuse, 0, sizeof(struct maple_node));
Expand Down

0 comments on commit 9155e84

Please sign in to comment.