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, richard.weiyang@gmail.com,
Sidhartha Kumar <sidhartha.kumar@oracle.com>,
"Liam R . Howlett" <Liam.Howlett@Oracle.com>
Subject: [PATCH v3 6/6] maple_tree: reorder mas->store_type case statements
Date: Thu, 27 Feb 2025 20:48:23 +0000 [thread overview]
Message-ID: <20250227204823.758784-7-sidhartha.kumar@oracle.com> (raw)
In-Reply-To: <20250227204823.758784-1-sidhartha.kumar@oracle.com>
Move the unlikely case that mas->store_type is invalid to be the last
evaluated case and put liklier cases higher up.
Suggested-by: Liam R. Howlett <liam.howlett@oracle.com>
Reviewed-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Signed-off-by: Sidhartha Kumar <sidhartha.kumar@oracle.com>
---
lib/maple_tree.c | 51 ++++++++++++++++++++++++------------------------
1 file changed, 25 insertions(+), 26 deletions(-)
diff --git a/lib/maple_tree.c b/lib/maple_tree.c
index d3aa5241166b..776693593ab9 100644
--- a/lib/maple_tree.c
+++ b/lib/maple_tree.c
@@ -4093,15 +4093,6 @@ static inline void mas_wr_store_entry(struct ma_wr_state *wr_mas)
unsigned char new_end = mas_wr_new_end(wr_mas);
switch (mas->store_type) {
- case wr_invalid:
- MT_BUG_ON(mas->tree, 1);
- return;
- case wr_new_root:
- mas_new_root(mas, wr_mas->entry);
- break;
- case wr_store_root:
- mas_store_root(mas, wr_mas->entry);
- break;
case wr_exact_fit:
rcu_assign_pointer(wr_mas->slots[mas->offset], wr_mas->entry);
if (!!wr_mas->entry ^ !!wr_mas->content)
@@ -4123,6 +4114,14 @@ static inline void mas_wr_store_entry(struct ma_wr_state *wr_mas)
case wr_rebalance:
mas_wr_bnode(wr_mas);
break;
+ case wr_new_root:
+ mas_new_root(mas, wr_mas->entry);
+ break;
+ case wr_store_root:
+ mas_store_root(mas, wr_mas->entry);
+ break;
+ case wr_invalid:
+ MT_BUG_ON(mas->tree, 1);
}
return;
@@ -4187,19 +4186,10 @@ static inline int mas_prealloc_calc(struct ma_wr_state *wr_mas, void *entry)
unsigned char delta = height - wr_mas->vacant_height;
switch (mas->store_type) {
- case wr_invalid:
- WARN_ON_ONCE(1);
- break;
- case wr_new_root:
- ret = 1;
- break;
- case wr_store_root:
- if (likely((mas->last != 0) || (mas->index != 0)))
- ret = 1;
- else if (((unsigned long) (entry) & 3) == 2)
- ret = 1;
- else
- ret = 0;
+ case wr_exact_fit:
+ case wr_append:
+ case wr_slot_store:
+ ret = 0;
break;
case wr_spanning_store:
if (wr_mas->sufficient_height < wr_mas->vacant_height)
@@ -4219,10 +4209,19 @@ static inline int mas_prealloc_calc(struct ma_wr_state *wr_mas, void *entry)
case wr_node_store:
ret = mt_in_rcu(mas->tree) ? 1 : 0;
break;
- case wr_append:
- case wr_exact_fit:
- case wr_slot_store:
- ret = 0;
+ case wr_new_root:
+ ret = 1;
+ break;
+ case wr_store_root:
+ if (likely((mas->last != 0) || (mas->index != 0)))
+ ret = 1;
+ else if (((unsigned long) (entry) & 3) == 2)
+ ret = 1;
+ else
+ ret = 0;
+ break;
+ case wr_invalid:
+ WARN_ON_ONCE(1);
}
return ret;
--
2.43.0
prev parent reply other threads:[~2025-02-27 20:48 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-27 20:48 [PATCH v3 0/6] Track node vacancy to reduce worst case allocation counts Sidhartha Kumar
2025-02-27 20:48 ` [PATCH v3 1/6] maple_tree: convert mas_prealloc_calc() to take in a maple write state Sidhartha Kumar
2025-02-27 20:48 ` [PATCH v3 2/6] maple_tree: use height and depth consistently Sidhartha Kumar
2025-02-27 20:48 ` [PATCH v3 3/6] maple_tree: use vacant nodes to reduce worst case allocations Sidhartha Kumar
2025-02-27 20:48 ` [PATCH v3 4/6] maple_tree: break on convergence in mas_spanning_rebalance() Sidhartha Kumar
2025-02-27 20:48 ` [PATCH v3 5/6] maple_tree: add sufficient height Sidhartha Kumar
2025-03-10 18:13 ` Vasily Gorbik
2025-03-10 21:01 ` Sidhartha Kumar
2025-03-10 22:27 ` Andrew Morton
2025-03-11 14:40 ` Sidhartha Kumar
2025-03-11 15:53 ` Vasily Gorbik
2025-02-27 20:48 ` Sidhartha Kumar [this message]
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=20250227204823.758784-7-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=richard.weiyang@gmail.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;
as well as URLs for NNTP newsgroup(s).