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;
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);
}
/* The rebalance operation will succeed. */
+ printk("\t\t%s\n", __func__);
+ mt_dump(mas->tree, mt_dump_hex);
i = 0;
offset = 0;
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;
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;