Re: [RESEND PATCH 1/8] maple_tree: set the node limit when creating a new root node

From: Liam R. Howlett
Date: Mon Jul 10 2023 - 11:08:13 EST


... actually add Geert to the cc list.

* Liam R. Howlett <Liam.Howlett@xxxxxxxxxx> [230710 11:06]:
> * Liam R. Howlett <Liam.Howlett@xxxxxxxxxx> [230707 11:18]:
> > * Peng Zhang <zhangpeng.00@xxxxxxxxxxxxx> [230707 06:11]:
> > > Set the node limit of the root node so that the last pivot of all nodes
> > > is the node limit (if the node is not full).
>
> This patch also fixes a bug in mas_rev_awalk(). Effectively, always
> setting a maximum makes mas_logical_pivot() behave as mas_safe_pivot().
> Without this fix, it is possible that very small tasks would fail to
> find the correct gap. Although this has not been observed with real
> tasks, it has been reported to happen in m68k nommu running the maple
> tree tests.
>
> Link: https://lore.kernel.org/linux-mm/CAMuHMdV4T53fOw7VPoBgPR7fP6RYqf=CBhD_y_vOg53zZX_DnA@xxxxxxxxxxxxxx/
> Cc: <stable@xxxxxxxxxxxxxxx>
> Cc: Geert Uytterhoeven <geert@xxxxxxxxxxxxxx>
>
> > >
> > > Signed-off-by: Peng Zhang <zhangpeng.00@xxxxxxxxxxxxx>
> >
> > This has been on my list of things to do for a while, thanks.
> >
> > Reviewed-by: Liam R. Howlett <Liam.Howlett@xxxxxxxxxx>
> >
> > > ---
> > > lib/maple_tree.c | 3 ++-
> > > 1 file changed, 2 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/lib/maple_tree.c b/lib/maple_tree.c
> > > index d3072858c280..f55e59bd9122 100644
> > > --- a/lib/maple_tree.c
> > > +++ b/lib/maple_tree.c
> > > @@ -3692,7 +3692,8 @@ static inline int mas_root_expand(struct ma_state *mas, void *entry)
> > > mas->offset = slot;
> > > pivots[slot] = mas->last;
> > > if (mas->last != ULONG_MAX)
> > > - slot++;
> > > + pivots[++slot] = ULONG_MAX;
> > > +
> > > mas->depth = 1;
> > > mas_set_height(mas);
> > > ma_set_meta(node, maple_leaf_64, 0, slot);
> > > --
> > > 2.20.1
> > >
> > >
>
> --
> maple-tree mailing list
> maple-tree@xxxxxxxxxxxxxxxxxxx
> https://lists.infradead.org/mailman/listinfo/maple-tree