From 493712a71136d784ec08cf7a43eb3d9e5b9b3467 Mon Sep 17 00:00:00 2001 From: "Liam R. Howlett" Date: Fri, 17 Jul 2020 20:28:49 -0400 Subject: [PATCH] maple_tree: awalk reduce again. Signed-off-by: Liam R. Howlett --- lib/maple_tree.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/lib/maple_tree.c b/lib/maple_tree.c index 1f4ba438dbef..0c56767f5591 100644 --- a/lib/maple_tree.c +++ b/lib/maple_tree.c @@ -3364,6 +3364,14 @@ void *mas_prev(struct ma_state *mas, unsigned long min) } EXPORT_SYMBOL_GPL(mas_prev); +static inline unsigned long _mas_rev_awalk_min(struct ma_state *mas, + unsigned char slot, + enum maple_type type) +{ + if (!slot) + return mas->min; + return _mte_get_pivot(mas->node, slot - 1, type) + 1; +} static inline bool _mas_rev_awalk(struct ma_state *mas, unsigned long size) { enum maple_type type; @@ -3384,11 +3392,7 @@ static inline bool _mas_rev_awalk(struct ma_state *mas, unsigned long size) do { void *entry = NULL; - if (!i) - min = mas->min; - else - min = _mte_get_pivot(mas->node, i - 1, - type) + 1; + min = _mas_rev_awalk_min(mas, i, type); /* last is below this range */ if (mas->last < min) @@ -3431,12 +3435,7 @@ next_slot: default: do { - if (!i) - min = mas->min; - else - min = _mte_get_pivot(mas->node, i - 1, - type) + 1; - + min = _mas_rev_awalk_min(mas, i, type); /* last is too little for this range */ if (mas->last < min) -- 2.50.1