Re: [PATCH] maple_tree: remove conditionals to detect wr_node_store

From: Liam R. Howlett
Date: Thu Oct 10 2024 - 13:17:00 EST


* Wei Yang <richard.weiyang@xxxxxxxxx> [241010 02:28]:
> On Wed, Oct 09, 2024 at 11:20:07AM -0400, Sidhartha Kumar wrote:
> >From: Sidhartha <sidhartha.kumar@xxxxxxxxxx>
> >
> >In mas_wr_store_type(), we check if new_end < mt_slots[wr_mas->type]. If
> >this check fails, we know that ,after this, new_end is >= mt_min_slots.
> >Checking this again when we detect a wr_node_store later in the function
> >is reduntant. Because this check is part of an OR statement, the statement
> >will always evaluate to true, therefore we can just get rid of it.
> >
> >Suggested-by; Wei Yang <richard.weiyang@xxxxxxxxx>
> >Signed-off-by: Sidhartha Kumar <sidhartha.kumar@xxxxxxxxxx>
> >---
> > lib/maple_tree.c | 9 +--------
> > 1 file changed, 1 insertion(+), 8 deletions(-)
> >
> >diff --git a/lib/maple_tree.c b/lib/maple_tree.c
> >index 4b423330d83c..f5a12d37b352 100644
> >--- a/lib/maple_tree.c
> >+++ b/lib/maple_tree.c
> >@@ -4252,14 +4252,7 @@ static inline void mas_wr_store_type(struct ma_wr_state *wr_mas)
> > return;
> > }
> >
> >- if (mte_is_root(mas->node) || (new_end >= mt_min_slots[wr_mas->type]) ||
> >- (mas->mas_flags & MA_STATE_BULK)) {
> >- mas->store_type = wr_node_store;
> >- return;
> >- }
> >-
> >- mas->store_type = wr_invalid;
> >- MAS_WARN_ON(mas, 1);
>
> If my understanding is correct, here is the only place we assign wr_invalid.
>
> So maybe we can remove this definition?

No. This needs to exist to catch incorrect uses of the API, at the very
least. I am not pleased that we aren't able to fall through to setting
this to catch missed settings with this code today.

We are now just assuming we got things right. Any mistakes will show up
as an out-of-memory issues with writes to the tree. It will be much
harder to track down what went wrong.

Currently it is set in the header as the default store type and should
remain for that use, at the very least.

>
> >+ mas->store_type = wr_node_store;
> > }
> >
> > /**
> >--
> >2.43.0
>
> --
> Wei Yang
> Help you, Help me