{
if (mt_is_alloc(mas->tree)) {
MA_STATE(r_mas, mas->tree, mas->index, mas->last);
-
+ mas->node = MAS_START;
_mas_walk(mas); // return to the updated location in the tree.
mas_dup_state(&r_mas, mas);
mas_update_gap(mas, true);
mt_validate(mt);
mtree_destroy(mt);
+
mt_set_non_kernel(99);
mtree_init(mt, MAPLE_ALLOC_RANGE);
check_erase2_testset(mt, set25, ARRAY_SIZE(set25));
rcu_barrier();
mt_validate(mt);
-
mtree_destroy(mt);
}
mtree_destroy(mt);
mt_set_non_kernel(0);
-
- return;
-
-
mt_set_non_kernel(50);
for (i = 0; i <= 500; i++) {
int val = i*5;
check_store_range(mt, 2460, 2470, NULL, 0);
check_store_range(mt, 2435, 2460, xa_mk_value(2435), 0);
check_store_range(mt, 2461, 2470, xa_mk_value(2461), 0);
- mt_dump(mt);
mt_set_non_kernel(0);
mtree_destroy(mt);
- exit(0);
+
+ // Test rebalance gaps
+ mtree_init(mt, MAPLE_ALLOC_RANGE);
+ mt_set_non_kernel(50);
+ for (i = 0; i <= 50; i++) {
+ int val = i*10;
+ int val2 = (i+1)*10;
+ check_store_range(mt, val, val2, xa_mk_value(val), 0);
+ }
+ check_store_range(mt, 161, 161, xa_mk_value(161), 0);
+ check_store_range(mt, 162, 162, xa_mk_value(162), 0);
+ check_store_range(mt, 163, 163, xa_mk_value(163), 0);
+ check_store_range(mt, 240, 249, NULL, 0);
+ mtree_erase(mt, 200);
+ mtree_erase(mt, 210);
+ mtree_erase(mt, 220);
+ mtree_erase(mt, 230);
+ mt_set_non_kernel(0);
+ mtree_destroy(mt);
}
static noinline void check_next_entry(struct maple_tree *mt)