From 2ff471d3048df3e41ff058aadc344e908c26f6b9 Mon Sep 17 00:00:00 2001 From: "Liam R. Howlett" Date: Wed, 26 Feb 2025 22:02:30 -0500 Subject: [PATCH] mas_wr_split using mt_wr_split_data Signed-off-by: Liam R. Howlett --- lib/maple_tree.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/lib/maple_tree.c b/lib/maple_tree.c index d1f6dcb2b49d..fe5947a66b26 100644 --- a/lib/maple_tree.c +++ b/lib/maple_tree.c @@ -3183,7 +3183,7 @@ void mns_node_part_leaf_init(struct ma_node_part *ma_part, ma_part->pivots[ma_part->size] = wr_mas->end_piv; ma_part->slots[ma_part->size] = src->slots[wr_mas->offset_end]; ma_part->size++; - printk("r_max remains\n"); + printk("r_max remains as %lx\n", wr_mas->end_piv); } ma_part->unfinished = false; @@ -3987,8 +3987,8 @@ static int mt_wr_split_data(struct ma_node_info *src, printk("A: min of %u and %u (%u - %u)\n", size, insert - offset, insert, offset); copied = min(size, insert - offset); } else { - printk("C: min of %u and %u\n", size, total_data - offset +1 ); - copied = min(size, src->end - node_off + 1); + printk("C: min of %u and %u\n", size, src->end - node_off + 1); + copied = min(size, (src->end - node_off + 1)); } printk("size is %u split %u\n", size, split); @@ -4111,6 +4111,8 @@ try_right: } /* The rebalance operation will succeed. */ + printk("\t\t%s\n", __func__); + mt_dump(mas->tree, mt_dump_hex); i = 0; offset = 0; @@ -4531,7 +4533,7 @@ static void mas_wr_split(struct ma_wr_state *wr_mas) mni_node_init(&right, mas_pop_node(mas), wr_mas->type); mns_mas_init(&src, &src_info, mas); mns_node_part_leaf_init(&ma_part, wr_mas, &src_info); - total = mas->end + ma_part.size - 1; + total = mas->end + ma_part.size; if (mt_is_alloc(mas->tree)) { right.alloc = left.alloc = true; @@ -4543,10 +4545,15 @@ static void mas_wr_split(struct ma_wr_state *wr_mas) goto rebalanced; split = (total + 1) / 2; - printk("Splitting leaf at %u store at %u\n", split, mas->offset); + printk("\t\tSplitting leaf at %u store at %u\n", split, mas->offset); left.min = mas->min; right.max = mas->max; -#if 1 + + mt_dump(wr_mas->mas->tree, mt_dump_hex); + i = mt_wr_split_data(&src_info, &left, &right, &ma_part, split, + mas->offset, split, 0, wr_mas->offset_end, + total, state, 0); +#if 0 if (split >= mas->offset) { unsigned char space; -- 2.50.1