From: Sidhartha Kumar <sidhartha.kumar@oracle.com>
To: linux-kernel@vger.kernel.org, maple-tree@lists.infradead.org
Cc: linux-mm@kvack.org, akpm@linux-foundation.org,
liam.howlett@oracle.com, zhangpeng.00@bytedance.com,
willy@infradead.org, Sidhartha Kumar <sidhartha.kumar@oracle.com>
Subject: [PATCH 16/18] maple_tree: remove node allocations from various write helper functions
Date: Tue, 4 Jun 2024 10:41:43 -0700 [thread overview]
Message-ID: <20240604174145.563900-17-sidhartha.kumar@oracle.com> (raw)
In-Reply-To: <20240604174145.563900-1-sidhartha.kumar@oracle.com>
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.
Signed-off-by: Sidhartha Kumar <sidhartha.kumar@oracle.com>
---
lib/maple_tree.c | 31 -------------------------------
1 file changed, 31 deletions(-)
diff --git a/lib/maple_tree.c b/lib/maple_tree.c
index 42853afc3885..3d2d8c2c24df 100644
--- a/lib/maple_tree.c
+++ b/lib/maple_tree.c
@@ -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;
@@ -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;
@@ -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;
@@ -3446,10 +3434,6 @@ static noinline_for_kasan int mas_commit_b_node(struct ma_wr_state *wr_mas,
if (mas_reuse_node(wr_mas, b_node, end))
goto reuse_node;
- mas_node_count(wr_mas->mas, 1);
- if (mas_is_err(wr_mas->mas))
- return 0;
-
node = mas_pop_node(wr_mas->mas);
node->parent = mas_mn(wr_mas->mas)->parent;
wr_mas->mas->node = mt_mk_node(node, b_type);
@@ -3475,10 +3459,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);
@@ -3747,10 +3727,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);
@@ -3813,9 +3789,6 @@ static inline 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
@@ -3899,10 +3872,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));
--
2.45.1
next prev parent reply other threads:[~2024-06-04 17:42 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-04 17:41 [PATCH 00/18] Introduce a store type enum for the Maple tree Sidhartha Kumar
2024-06-04 17:41 ` [PATCH 01/18] maple_tree: introduce store_type enum Sidhartha Kumar
2024-06-04 17:41 ` [PATCH 02/18] maple_tree: introduce mas_wr_prealloc_setup() Sidhartha Kumar
2024-06-04 17:41 ` [PATCH 03/18] maple_tree: move up mas_wr_store_setup() and mas_wr_prealloc_setup() Sidhartha Kumar
2024-06-04 17:41 ` [PATCH 04/18] maple_tree: introduce mas_wr_store_type() Sidhartha Kumar
2024-06-04 19:07 ` Liam R. Howlett
2024-06-06 2:15 ` Sidhartha Kumar
2024-06-04 21:09 ` kernel test robot
2024-06-04 17:41 ` [PATCH 05/18] maple_tree: set store type in mas_store_prealloc() Sidhartha Kumar
2024-06-04 19:27 ` Liam R. Howlett
2024-06-04 17:41 ` [PATCH 06/18] maple_tree: remove mas_destroy() from mas_nomem() Sidhartha Kumar
2024-06-04 19:21 ` Liam R. Howlett
2024-06-04 17:41 ` [PATCH 07/18] maple_tree: use mas_store_gfp() in mas_erase() Sidhartha Kumar
2024-06-04 17:41 ` [PATCH 08/18] maple_tree: set write store type in mas_store() Sidhartha Kumar
2024-06-04 17:41 ` [PATCH 09/18] maple_tree: use mas_store_gfp() in mtree_store_range() Sidhartha Kumar
2024-06-04 19:24 ` Liam R. Howlett
2024-06-04 17:41 ` [PATCH 10/18] maple_tree: print store type in mas_dump() Sidhartha Kumar
2024-06-04 17:41 ` [PATCH 11/18] maple_tree: use store type in mas_wr_store_entry() Sidhartha Kumar
2024-06-04 22:02 ` kernel test robot
2024-06-04 17:41 ` [PATCH 12/18] maple_tree: convert mas_insert() to preallocate nodes Sidhartha Kumar
2024-06-04 22:44 ` kernel test robot
2024-06-04 17:41 ` [PATCH 13/18] maple_tree: simplify mas_commit_b_node() Sidhartha Kumar
2024-06-04 19:34 ` Liam R. Howlett
2024-06-26 10:40 ` Mateusz Guzik
2024-06-26 17:28 ` Andrew Morton
2024-06-26 17:45 ` Sidhartha Kumar
2024-06-26 18:29 ` Mateusz Guzik
2024-06-04 17:41 ` [PATCH 14/18] maple_tree: remove mas_wr_modify() Sidhartha Kumar
2024-06-04 17:41 ` [PATCH 15/18] maple_tree: have mas_store() allocate nodes if needed Sidhartha Kumar
2024-06-04 17:41 ` Sidhartha Kumar [this message]
2024-06-04 17:41 ` [PATCH 17/18] maple_tree: remove repeated sanity checks from mas_wr_append() Sidhartha Kumar
2024-06-04 17:41 ` [PATCH 18/18] maple_tree: remove unneeded mas_wr_walk() in mas_store_prealloc() Sidhartha Kumar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240604174145.563900-17-sidhartha.kumar@oracle.com \
--to=sidhartha.kumar@oracle.com \
--cc=akpm@linux-foundation.org \
--cc=liam.howlett@oracle.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=maple-tree@lists.infradead.org \
--cc=willy@infradead.org \
--cc=zhangpeng.00@bytedance.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox