summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorPeng Zhang <zhangpeng.00@bytedance.com>2023-11-20 15:09:34 +0800
committerAndrew Morton <akpm@linux-foundation.org>2023-12-12 10:57:00 -0800
commit3f05fcdebf2979569802e1ee94cf4c7d887546e2 (patch)
tree34963ea9aa8f725a5a27ac31dfdca3773b96e8fd /lib
parent2e783f0c1a0d9017209f2ed243960924ebb602cb (diff)
maple_tree: avoid ascending when mas->min is also the parent's minimum
When the child node is the first child of its parent node, mas->min does not need to be updated. This can reduce the number of ascending times in some cases. Link: https://lkml.kernel.org/r/20231120070937.35481-3-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>
Diffstat (limited to 'lib')
-rw-r--r--lib/maple_tree.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/lib/maple_tree.c b/lib/maple_tree.c
index df3ae393f12a..e26bc4473eb7 100644
--- a/lib/maple_tree.c
+++ b/lib/maple_tree.c
@@ -1088,14 +1088,16 @@ static int mas_ascend(struct ma_state *mas)
return 0;
}
- if (!mas->min)
+ min = 0;
+ max = ULONG_MAX;
+ if (!mas->offset) {
+ min = mas->min;
set_min = true;
+ }
if (mas->max == ULONG_MAX)
set_max = true;
- min = 0;
- max = ULONG_MAX;
do {
p_enode = a_enode;
a_type = mas_parent_type(mas, p_enode);