From d122b4b312a1f7f178605e56298e1cbf65e61f0b Mon Sep 17 00:00:00 2001 From: "Liam R. Howlett" Date: Thu, 25 Nov 2021 13:43:56 -0500 Subject: [PATCH] maple_tree: Move wr_mas offset_end setting to walk Signed-off-by: Liam R. Howlett --- lib/maple_tree.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/maple_tree.c b/lib/maple_tree.c index 093423fedc0a..152c3a5af82b 100644 --- a/lib/maple_tree.c +++ b/lib/maple_tree.c @@ -2168,7 +2168,7 @@ max: done: wr_mas->r_max = max; wr_mas->r_min = min; - mas->offset = offset; + wr_mas->offset_end = mas->offset = offset; } /* @@ -3548,16 +3548,17 @@ static bool mas_wr_walk(struct ma_wr_state *wr_mas) while (true) { mas_wr_walk_descend(wr_mas); - if (mas_is_span_wr(wr_mas)) + if (unlikely(mas_is_span_wr(wr_mas))) return false; wr_mas->content = mas_slot_locked(mas, wr_mas->slots, mas->offset); if (ma_is_leaf(wr_mas->type)) return true; - mas_wr_walk_traverse(wr_mas); + mas_wr_walk_traverse(wr_mas); } + return true; } @@ -4316,19 +4317,18 @@ static inline void *mas_store_entry(struct ma_wr_state *wr_mas) { struct ma_state *mas = wr_mas->mas; - if ((wr_mas->content = mas_start(mas)) || - mas_is_none(mas) || mas->node == MAS_ROOT) { + if ((wr_mas->content = mas_start(mas)) || mas_is_none(mas) || + mas_is_ptr(mas)) { mas_store_root(mas, wr_mas->entry); return wr_mas->content; } - if (!mas_wr_walk(wr_mas)) { + if (unlikely(!mas_wr_walk(wr_mas))) { mas_spanning_store(wr_mas); return wr_mas->content; } /* At this point, we are at the leaf node that needs to be altered. */ - wr_mas->offset_end = mas->offset; wr_mas->end_piv = wr_mas->r_max; mas_wr_end_piv(wr_mas); @@ -4336,7 +4336,7 @@ static inline void *mas_store_entry(struct ma_wr_state *wr_mas) mas_wr_extend_null(wr_mas); /* New root for a single pointer */ - if (!mas->index && mas->last == ULONG_MAX) { + if (unlikely(!mas->index && mas->last == ULONG_MAX)) { mas_new_root(mas, wr_mas->entry); return wr_mas->content; } -- 2.50.1