]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
try_rebalance converted
authorLiam R. Howlett <Liam.Howlett@oracle.com>
Thu, 10 Apr 2025 18:19:39 +0000 (14:19 -0400)
committerLiam R. Howlett <Liam.Howlett@oracle.com>
Thu, 10 Apr 2025 18:19:39 +0000 (14:19 -0400)
Signed-off-by: Liam R. Howlett <Liam.Howlett@oracle.com>
lib/maple_tree.c

index f6418ec2a2a65aebbe57976b8e6715c25ed1761a..d917744dc36a58c083e5562deca82963020e1642 100644 (file)
@@ -3864,7 +3864,6 @@ static int mt_wr_split_data(struct ma_node_info *src,
        unsigned char node_off, part_off;
        struct ma_node_info *to;
 
-       state = sd->state;
        i = sd->len;
 
        /* Offset into the destination data where the insert ends */
@@ -3931,6 +3930,7 @@ static int mt_wr_split_data(struct ma_node_info *src,
                }
                i++;
        } while (node_off <= src->end);
+       sd->len = i;
        return i;
 }
 
@@ -3951,8 +3951,7 @@ bool mas_wr_try_rebalance(struct ma_state *mas, struct ma_node_info *src,
 {
        struct ma_state tmp_mas;
        struct ma_node_info src2, parent, new_parent;
-       struct ma_node_state state[5];
-       unsigned char split, max, i;
+       unsigned char split, max;
        bool left_store = false;
 
        /*
@@ -4005,10 +4004,8 @@ try_right:
        /* The rebalance operation will succeed. */
 
        sd->split = split;
-       sd->state = state;
        sd->new_end += src2.end + 1;
 
-       i = 0;
        if (left_store)  {
                /* Left pushes data right. */
                sd->insert = mas->offset;
@@ -4019,9 +4016,8 @@ try_right:
                sd->insert = mas->offset + src2.end + 1;
                sd->offset = src2.end + 1;
                sd->space = split - src2.end;
-               state[i].info = &src2;
-               mns_mni_init(&state[i], left, 0, src2.end + 1);
-               i++;
+               sd->states[sd->len].info = &src2;
+               mns_mni_init(&sd->states[sd->len], left, 0, src2.end + 1);
                sd->len++;
        }
 
@@ -4030,14 +4026,15 @@ try_right:
         * There can also be a split between nodes that may happen at these
         * boundaries, or elsewhere.
         */
-       i = mt_wr_split_data(src, left, right, ma_part,
-                            state, i, sd);
+       mt_wr_split_data(src, left, right, ma_part,
+                            sd->states, sd->len, sd);
        if (left_store) {
-               state[i].info = &src2;
-               mns_mni_init(&state[i++], right, 0, src2.end + 1);
+               sd->states[sd->len].info = &src2;
+               mns_mni_init(&sd->states[sd->len], right, 0, src2.end + 1);
+               sd->len++;
        }
 
-       mns_assemble(state, i);
+       mns_assemble(sd->states, sd->len);
        mni_finalise(left);
        mni_finalise(right);
        mni_node_part_init(ma_part, left, right);