From 26af15f30fff3279a75926179f6d14a548d8978a Mon Sep 17 00:00:00 2001 From: "Liam R. Howlett" Date: Fri, 16 May 2025 12:04:04 -0400 Subject: [PATCH] broken Signed-off-by: Liam R. Howlett --- lib/maple_tree.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/maple_tree.c b/lib/maple_tree.c index f4c4d73ca7f9b..a176d8640f1cf 100644 --- a/lib/maple_tree.c +++ b/lib/maple_tree.c @@ -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; -- 2.50.1