* Sidhartha Kumar <sidhartha.kumar@xxxxxxxxxx> [250221 11:36]: > Move the unlikely case that mas->store_type is invalid to be the last > evaluated case and put liklier cases higher up. > > Suggested-by: Liam Howlett <liam.howlett@xxxxxxxxxx> > Signed-off-by: Sidhartha <sidhartha.kumar@xxxxxxxxxx> Thanks for doing this. There will probably be zero change in the benchmarking besides instruction count, but it's low risk and low effort to do. Reviewed-by: Liam R. Howlett <Liam.Howlett@xxxxxxxxxx> > --- > lib/maple_tree.c | 51 ++++++++++++++++++++++++------------------------ > 1 file changed, 25 insertions(+), 26 deletions(-) > > diff --git a/lib/maple_tree.c b/lib/maple_tree.c > index 8fdd3f477198..36d7d7a27e32 100644 > --- a/lib/maple_tree.c > +++ b/lib/maple_tree.c > @@ -4091,15 +4091,6 @@ static inline void mas_wr_store_entry(struct ma_wr_state *wr_mas) > unsigned char new_end = mas_wr_new_end(wr_mas); > > switch (mas->store_type) { > - case wr_invalid: > - MT_BUG_ON(mas->tree, 1); > - return; > - case wr_new_root: > - mas_new_root(mas, wr_mas->entry); > - break; > - case wr_store_root: > - mas_store_root(mas, wr_mas->entry); > - break; > case wr_exact_fit: > rcu_assign_pointer(wr_mas->slots[mas->offset], wr_mas->entry); > if (!!wr_mas->entry ^ !!wr_mas->content) > @@ -4121,6 +4112,14 @@ static inline void mas_wr_store_entry(struct ma_wr_state *wr_mas) > case wr_rebalance: > mas_wr_bnode(wr_mas); > break; > + case wr_new_root: > + mas_new_root(mas, wr_mas->entry); > + break; > + case wr_store_root: > + mas_store_root(mas, wr_mas->entry); > + break; > + case wr_invalid: > + MT_BUG_ON(mas->tree, 1); > } > > return; > @@ -4185,19 +4184,10 @@ static inline int mas_prealloc_calc(struct ma_wr_state *wr_mas, void *entry) > unsigned char delta = height - wr_mas->vacant_height; > > switch (mas->store_type) { > - case wr_invalid: > - WARN_ON_ONCE(1); > - break; > - case wr_new_root: > - ret = 1; > - break; > - case wr_store_root: > - if (likely((mas->last != 0) || (mas->index != 0))) > - ret = 1; > - else if (((unsigned long) (entry) & 3) == 2) > - ret = 1; > - else > - ret = 0; > + case wr_exact_fit: > + case wr_append: > + case wr_slot_store: > + ret = 0; > break; > case wr_spanning_store: > if (wr_mas->sufficient_height < wr_mas->vacant_height) > @@ -4217,10 +4207,19 @@ static inline int mas_prealloc_calc(struct ma_wr_state *wr_mas, void *entry) > case wr_node_store: > ret = mt_in_rcu(mas->tree) ? 1 : 0; > break; > - case wr_append: > - case wr_exact_fit: > - case wr_slot_store: > - ret = 0; > + case wr_new_root: > + ret = 1; > + break; > + case wr_store_root: > + if (likely((mas->last != 0) || (mas->index != 0))) > + ret = 1; > + else if (((unsigned long) (entry) & 3) == 2) > + ret = 1; > + else > + ret = 0; > + break; > + case wr_invalid: > + WARN_ON_ONCE(1); > } > > return ret; > -- > 2.43.0 >