]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
spanning store mess
authorLiam R. Howlett <Liam.Howlett@oracle.com>
Wed, 7 May 2025 00:13:25 +0000 (20:13 -0400)
committerLiam R. Howlett <Liam.Howlett@oracle.com>
Wed, 7 May 2025 00:13:29 +0000 (20:13 -0400)
Signed-off-by: Liam R. Howlett <Liam.Howlett@oracle.com>
lib/maple_tree.c

index 64ae95b02c08489e99d3610af56f02b493276add..9482a0e413733018905960382e02181e9a4b9241 100644 (file)
@@ -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;