From: Liam R. Howlett Date: Wed, 7 May 2025 00:13:25 +0000 (-0400) Subject: spanning store mess X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=cb73f18ad3815d1583092e439f42a4a0da088db8;p=users%2Fjedix%2Flinux-maple.git spanning store mess Signed-off-by: Liam R. Howlett --- diff --git a/lib/maple_tree.c b/lib/maple_tree.c index 64ae95b02c08..9482a0e41373 100644 --- a/lib/maple_tree.c +++ b/lib/maple_tree.c @@ -4876,13 +4876,15 @@ static void mas_wr_spanning_store(struct ma_wr_state *wr_mas) sd.split = mt_slots[src.type]; rebalance_reduce(&left, &src, &r_src, &part, &sd); if (ma_is_root(parent.node)) { + sd.new_end = r_parent.offset - parent.offset; + sd.new_end = parent.end - sd.new_end; + printk("sd.new_end is %u\n", sd.new_end); /* This is wrong... * We have parent.end != 1, but we have * replaced all the data.. * */ - if (parent.end != 1) + if (sd.new_end > 1) break; - src.enode = mas->node; left.node->parent = mas_mn(mas)->parent; mas->node = left.enode;