]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
fix rewind for ma_part
authorLiam R. Howlett <Liam.Howlett@oracle.com>
Thu, 27 Feb 2025 18:57:47 +0000 (13:57 -0500)
committerLiam R. Howlett <Liam.Howlett@oracle.com>
Thu, 27 Feb 2025 18:57:47 +0000 (13:57 -0500)
Signed-off-by: Liam R. Howlett <Liam.Howlett@oracle.com>
lib/maple_tree.c

index fe5947a66b26af4623ac4ebc10ebe07a54ee4890..2b9a3f376fa676ef6f8b17e415b18ac3fff1831e 100644 (file)
@@ -3971,7 +3971,8 @@ static int mt_wr_split_data(struct ma_node_info *src,
 
                if (offset >= insert && offset < insert_end) {
                        copied = min(ma_part->size - part_off, size);
-                       printk("B:Insert at %u/%u size %u\n", offset, total_data, copied);
+                       printk("B: Insert at %u/%u size %u (out of %u)\n", offset, total_data, copied,
+                              ma_part->size);
                        state[i].part = ma_part;
                        mns_mni_init(&state[i], to, part_off, copied);
                        state[i].use_part = true;
@@ -4006,16 +4007,19 @@ static int mt_wr_split_data(struct ma_node_info *src,
                        if (mns_ends_in_null(&state[i])) {
                                printk("null split, adjust - 1\n");
                                if (!state[i].use_part && offset != insert) {
+                                       printk("\tuse_part\n");
                                        state[i].size++;
                                        split++;
                                        offset++;
                                        size--;
                                        node_off++;
                                } else {
+                                       printk("\tregular\n");
                                        state[i].size--;
                                        split--;
                                        offset--;
                                        size++;
+                                       part_off--;
                                        if (!state[i].use_part)
                                                node_off--;
                                }
@@ -4112,15 +4116,15 @@ try_right:
 
        /* The rebalance operation will succeed. */
        printk("\t\t%s\n", __func__);
-       mt_dump(mas->tree, mt_dump_hex);
+       mt_dump(mas->tree, mt_dump_dec);
 
        i = 0;
        offset = 0;
        total_data = src2.end + new_end + 1;
        if (left_store)  {
-               printk("left store\n");
                /* Left pushes data right. */
                insert = mas->offset;
+               printk("left store at %u\n", insert);
                size = split;
        } else {
                printk("right store\n");
@@ -4523,7 +4527,7 @@ static void mas_wr_split(struct ma_wr_state *wr_mas)
        trace_ma_op(__func__, mas);
 
        printk("\t\t%s\n", __func__);
-       mt_dump(mas->tree, mt_dump_hex);
+       mt_dump(mas->tree, mt_dump_dec);
        printk ("Store %lu - %lu => %p\n", mas->index, mas->last, wr_mas->entry);
        height = mas_mt_height(mas);
        mas->depth = height;
@@ -4549,7 +4553,7 @@ static void mas_wr_split(struct ma_wr_state *wr_mas)
        left.min = mas->min;
        right.max = mas->max;
 
-       mt_dump(wr_mas->mas->tree, mt_dump_hex);
+       mt_dump(wr_mas->mas->tree, mt_dump_dec);
        i = mt_wr_split_data(&src_info, &left, &right, &ma_part, split,
                             mas->offset, split, 0, wr_mas->offset_end,
                             total, state, 0);
@@ -4774,7 +4778,7 @@ converged:
 rebalanced:
        mas_wmb_replace(mas, src_info.enode);
        mtree_range_walk(mas);
-       mt_dump(wr_mas->mas->tree, mt_dump_hex);
+       mt_dump(wr_mas->mas->tree, mt_dump_dec);
 }
 
 /*