mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-04 04:02:26 +00:00
maple_tree: move mas_wr_end_piv() below mas_wr_extend_null()
Relocate it and call mas_wr_extend_null() from within mas_wr_end_piv(). Extending the NULL may affect the end pivot value so call mas_wr_endtend_null() from within mas_wr_end_piv() to keep it all together. Link: https://lkml.kernel.org/r/20230724183157.3939892-12-Liam.Howlett@oracle.com Signed-off-by: Liam R. Howlett <Liam.Howlett@oracle.com> Cc: Peng Zhang <zhangpeng.00@bytedance.com> Cc: Suren Baghdasaryan <surenb@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
b5df092264
commit
a7496ad529
@ -4180,18 +4180,6 @@ static inline bool mas_wr_slot_store(struct ma_wr_state *wr_mas)
|
||||
return true;
|
||||
}
|
||||
|
||||
static inline void mas_wr_end_piv(struct ma_wr_state *wr_mas)
|
||||
{
|
||||
while ((wr_mas->offset_end < wr_mas->node_end) &&
|
||||
(wr_mas->mas->last > wr_mas->pivots[wr_mas->offset_end]))
|
||||
wr_mas->offset_end++;
|
||||
|
||||
if (wr_mas->offset_end < wr_mas->node_end)
|
||||
wr_mas->end_piv = wr_mas->pivots[wr_mas->offset_end];
|
||||
else
|
||||
wr_mas->end_piv = wr_mas->mas->max;
|
||||
}
|
||||
|
||||
static inline void mas_wr_extend_null(struct ma_wr_state *wr_mas)
|
||||
{
|
||||
struct ma_state *mas = wr_mas->mas;
|
||||
@ -4228,6 +4216,21 @@ static inline void mas_wr_extend_null(struct ma_wr_state *wr_mas)
|
||||
}
|
||||
}
|
||||
|
||||
static inline void mas_wr_end_piv(struct ma_wr_state *wr_mas)
|
||||
{
|
||||
while ((wr_mas->offset_end < wr_mas->node_end) &&
|
||||
(wr_mas->mas->last > wr_mas->pivots[wr_mas->offset_end]))
|
||||
wr_mas->offset_end++;
|
||||
|
||||
if (wr_mas->offset_end < wr_mas->node_end)
|
||||
wr_mas->end_piv = wr_mas->pivots[wr_mas->offset_end];
|
||||
else
|
||||
wr_mas->end_piv = wr_mas->mas->max;
|
||||
|
||||
if (!wr_mas->entry)
|
||||
mas_wr_extend_null(wr_mas);
|
||||
}
|
||||
|
||||
static inline unsigned char mas_wr_new_end(struct ma_wr_state *wr_mas)
|
||||
{
|
||||
struct ma_state *mas = wr_mas->mas;
|
||||
@ -4371,10 +4374,6 @@ static inline void *mas_wr_store_entry(struct ma_wr_state *wr_mas)
|
||||
|
||||
/* At this point, we are at the leaf node that needs to be altered. */
|
||||
mas_wr_end_piv(wr_mas);
|
||||
|
||||
if (!wr_mas->entry)
|
||||
mas_wr_extend_null(wr_mas);
|
||||
|
||||
/* New root for a single pointer */
|
||||
if (unlikely(!mas->index && mas->last == ULONG_MAX)) {
|
||||
mas_new_root(mas, wr_mas->entry);
|
||||
|
Loading…
Reference in New Issue
Block a user