]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
maple_tree: reorder mas->store_type case statements
authorSidhartha Kumar <sidhartha.kumar@oracle.com>
Thu, 27 Feb 2025 20:48:23 +0000 (20:48 +0000)
committerAndrew Morton <akpm@linux-foundation.org>
Tue, 4 Mar 2025 05:50:39 +0000 (21:50 -0800)
Move the unlikely case that mas->store_type is invalid to be the last
evaluated case and put liklier cases higher up.

Link: https://lkml.kernel.org/r/20250227204823.758784-7-sidhartha.kumar@oracle.com
Signed-off-by: Sidhartha Kumar <sidhartha.kumar@oracle.com>
Suggested-by: Liam R. Howlett <liam.howlett@oracle.com>
Reviewed-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Cc: Wei Yang <richard.weiyang@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
lib/maple_tree.c

index 0d1b55b1dc1293c00c919bfac0c950d27612fbd7..ea1f0acac1183a1f2f34b63200d3b568e6a5c015 100644 (file)
@@ -4089,15 +4089,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)
@@ -4119,6 +4110,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;
@@ -4183,19 +4182,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)
@@ -4215,10 +4205,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;