maple_tree: reorder mas->store_type case statements
authorSidhartha Kumar <sidhartha.kumar@oracle.com>
Thu, 10 Apr 2025 19:14:46 +0000 (19:14 +0000)
committerAndrew Morton <akpm@linux-foundation.org>
Mon, 12 May 2025 00:48:29 +0000 (17:48 -0700)
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/20250410191446.2474640-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: Matthew Wilcox (Oracle) <willy@infradead.org>
Cc: Wei Yang <richard.weiyang@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
lib/maple_tree.c

index aa139668bcaeeb383c27b7dab4a3741ba9f4192c..affe979bd14d30b96f8e012ff03dfd2fda6eec0b 100644 (file)
@@ -4083,15 +4083,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)
@@ -4113,6 +4104,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;
@@ -4177,19 +4176,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)
@@ -4209,10 +4199,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;