broken
authorLiam R. Howlett <Liam.Howlett@oracle.com>
Fri, 16 May 2025 16:04:04 +0000 (12:04 -0400)
committerLiam R. Howlett <Liam.Howlett@oracle.com>
Fri, 16 May 2025 16:04:04 +0000 (12:04 -0400)
Signed-off-by: Liam R. Howlett <Liam.Howlett@oracle.com>
lib/maple_tree.c

index f4c4d73ca7f9b5da15e45448538f40e8c368cd1d..a176d8640f1cf0223965430b41b143b1661d3640 100644 (file)
@@ -3494,6 +3494,7 @@ void mas_wr_ascend_init(struct ma_state *mas, struct ma_node_info *ni)
        ni->max = mas->max;
        _mni_node_init(ni, ni->node, ni->type);
        mni_set_end(ni);
+       mas->end = ni->end;
        ni->insert_off = mas->offset;
 }
 
@@ -5038,9 +5039,13 @@ static void mas_wr_spanning_store(struct ma_wr_state *wr_mas)
                 */
                /* Set up sources (up to 3) + part (always) */
                sd.new_end = r_mas.end + mas->end - part.skip + 1 + part.size;
-               printk("new end is %u\n", sd.new_end);
+               printk("\tAt %p and r_mas %p\n", mas_mn(mas), mas_mn(&r_mas));
+               printk("new end is %u (%u + %u - %u + 1 + %u)\n", sd.new_end,
+                      r_mas.end, mas->end, part.skip, part.size);
                mas_wr_ascend_init(&r_mas, &r_parent);
                mas_wr_ascend_init(mas, &parent);
+               printk("ascend is %u (%u + %u - %u + 1 + %u)\n", sd.new_end,
+                      r_mas.end, mas->end, part.skip, part.size);
                if (sd.new_end < mt_min_slots[left.type] &&
                    !ma_is_root(left.node) &&
                    (left.min || right.max != ULONG_MAX)) {
@@ -5184,6 +5189,7 @@ static void mas_wr_spanning_store(struct ma_wr_state *wr_mas)
                if (ma_is_root(parent.node)) {
                        printk("\n\nNew root\n");
                        if (!dst[0].min && dst[0].max == ULONG_MAX) {
+                               printk("height reduction\n\n");
                                mas->depth = height;
                                left.enode = mas->node;
                                dst[0].node->parent = parent.node->parent;