]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
rebalance_reduce use split_state_setup
authorLiam R. Howlett <Liam.Howlett@oracle.com>
Fri, 2 May 2025 20:15:33 +0000 (16:15 -0400)
committerLiam R. Howlett <Liam.Howlett@oracle.com>
Fri, 2 May 2025 20:15:33 +0000 (16:15 -0400)
Signed-off-by: Liam R. Howlett <Liam.Howlett@oracle.com>
lib/maple_tree.c

index 374d0d9fbd27a34e79d87b068e7d43150bfc50ad..39a35f764e945546cd6d991aeb24934a6539dc1f 100644 (file)
@@ -4019,8 +4019,10 @@ static void mas_wr_rebalance_reduce(struct ma_wr_state *wr_mas,
                struct split_data *sd,
                bool left_store)
 {
+       printk("\t\t%s\n", __func__);
+       sd->insert_end = sd->insert + part->size - 1;
        if (!left_store) {
-               printk("store right->n");
+               printk("store right\n");
                left->min = src2->min;
                left->max = src->max;
                sd->offset = src2->end + 1;
@@ -4037,7 +4039,16 @@ static void mas_wr_rebalance_reduce(struct ma_wr_state *wr_mas,
                left->max = src2->max;
        }
 
-       mt_wr_split_data(src, left, NULL, part, sd);
+
+       do {
+               printk("cp from %p starting at %u\n", src->node, src->offset);
+               split_state_setup(src, left, part, sd);
+               printk("state %d: cp %p[%u] + %u to %s\n", sd->len, src->node,
+                      sd->states[sd->len].start,
+                      sd->states[sd->len].size, "always left");
+               sd->len++;
+       } while (src->offset <= src->end);
+
        if (left_store) {
                sd->states[sd->len].info = src2;
                printk("cp right->%u + %u to left\n", 0, src2->end + 1);