Lines Matching full:mt
24 #define RCU_MT_BUG_ON(test, y) {if (y) { test->stop = true; } MT_BUG_ON(test->mt, y); }
27 struct maple_tree *mt; member
44 struct maple_tree *mt; member
63 static noinline void __init check_erase(struct maple_tree *mt, unsigned long index, in check_erase() argument
66 MT_BUG_ON(mt, mtree_test_erase(mt, index) != ptr); in check_erase()
69 #define erase_check_load(mt, i) check_load(mt, set[i], entry[i%2]) argument
70 #define erase_check_insert(mt, i) check_insert(mt, set[i], entry[i%2]) argument
71 #define erase_check_erase(mt, i) check_erase(mt, set[i], entry[i%2]) argument
73 static noinline void __init check_erase_testset(struct maple_tree *mt) in check_erase_testset() argument
91 void *entry[2] = { ptr, mt }; in check_erase_testset()
96 mt_set_in_rcu(mt); in check_erase_testset()
98 erase_check_insert(mt, i); in check_erase_testset()
100 erase_check_load(mt, i); in check_erase_testset()
103 erase_check_erase(mt, 1); in check_erase_testset()
104 erase_check_load(mt, 0); in check_erase_testset()
105 check_load(mt, set[1], NULL); in check_erase_testset()
107 erase_check_load(mt, i); in check_erase_testset()
110 erase_check_erase(mt, 2); in check_erase_testset()
111 erase_check_load(mt, 0); in check_erase_testset()
112 check_load(mt, set[1], NULL); in check_erase_testset()
113 check_load(mt, set[2], NULL); in check_erase_testset()
115 erase_check_insert(mt, 1); in check_erase_testset()
116 erase_check_insert(mt, 2); in check_erase_testset()
119 erase_check_load(mt, i); in check_erase_testset()
122 erase_check_load(mt, 3); in check_erase_testset()
123 erase_check_erase(mt, 1); in check_erase_testset()
124 erase_check_load(mt, 0); in check_erase_testset()
125 check_load(mt, set[1], NULL); in check_erase_testset()
127 erase_check_load(mt, i); in check_erase_testset()
133 root_node = mt->ma_root; in check_erase_testset()
134 erase_check_insert(mt, 1); in check_erase_testset()
136 erase_check_load(mt, 0); in check_erase_testset()
137 check_load(mt, 5016, NULL); in check_erase_testset()
138 erase_check_load(mt, 1); in check_erase_testset()
139 check_load(mt, 5013, NULL); in check_erase_testset()
140 erase_check_load(mt, 2); in check_erase_testset()
141 check_load(mt, 5018, NULL); in check_erase_testset()
142 erase_check_load(mt, 3); in check_erase_testset()
144 erase_check_erase(mt, 2); /* erase 5017 to check append */ in check_erase_testset()
145 erase_check_load(mt, 0); in check_erase_testset()
146 check_load(mt, 5016, NULL); in check_erase_testset()
147 erase_check_load(mt, 1); in check_erase_testset()
148 check_load(mt, 5013, NULL); in check_erase_testset()
149 check_load(mt, set[2], NULL); in check_erase_testset()
150 check_load(mt, 5018, NULL); in check_erase_testset()
152 erase_check_load(mt, 3); in check_erase_testset()
154 root_node = mt->ma_root; in check_erase_testset()
155 erase_check_insert(mt, 2); in check_erase_testset()
157 erase_check_load(mt, 0); in check_erase_testset()
158 check_load(mt, 5016, NULL); in check_erase_testset()
159 erase_check_load(mt, 1); in check_erase_testset()
160 check_load(mt, 5013, NULL); in check_erase_testset()
161 erase_check_load(mt, 2); in check_erase_testset()
162 check_load(mt, 5018, NULL); in check_erase_testset()
163 erase_check_load(mt, 3); in check_erase_testset()
166 erase_check_erase(mt, 2); /* erase 5017 to check append */ in check_erase_testset()
167 erase_check_load(mt, 0); in check_erase_testset()
168 check_load(mt, 5016, NULL); in check_erase_testset()
169 check_load(mt, set[2], NULL); in check_erase_testset()
170 erase_check_erase(mt, 0); /* erase 5015 to check append */ in check_erase_testset()
171 check_load(mt, set[0], NULL); in check_erase_testset()
172 check_load(mt, 5016, NULL); in check_erase_testset()
173 erase_check_insert(mt, 4); /* 1000 < Should not split. */ in check_erase_testset()
174 check_load(mt, set[0], NULL); in check_erase_testset()
175 check_load(mt, 5016, NULL); in check_erase_testset()
176 erase_check_load(mt, 1); in check_erase_testset()
177 check_load(mt, 5013, NULL); in check_erase_testset()
178 check_load(mt, set[2], NULL); in check_erase_testset()
179 check_load(mt, 5018, NULL); in check_erase_testset()
180 erase_check_load(mt, 4); in check_erase_testset()
181 check_load(mt, 999, NULL); in check_erase_testset()
182 check_load(mt, 1001, NULL); in check_erase_testset()
183 erase_check_load(mt, 4); in check_erase_testset()
184 if (mt_in_rcu(mt)) in check_erase_testset()
185 MT_BUG_ON(mt, root_node == mt->ma_root); in check_erase_testset()
187 MT_BUG_ON(mt, root_node != mt->ma_root); in check_erase_testset()
190 MT_BUG_ON(mt, !mte_is_leaf(mt->ma_root)); in check_erase_testset()
194 erase_check_insert(mt, 0); in check_erase_testset()
195 erase_check_insert(mt, 2); in check_erase_testset()
198 erase_check_insert(mt, i); in check_erase_testset()
200 erase_check_load(mt, j); in check_erase_testset()
203 erase_check_erase(mt, 14); /*6015 */ in check_erase_testset()
206 check_load(mt, set[i], NULL); in check_erase_testset()
208 erase_check_load(mt, i); in check_erase_testset()
210 erase_check_erase(mt, 16); /*7002 */ in check_erase_testset()
213 check_load(mt, set[i], NULL); in check_erase_testset()
215 erase_check_load(mt, i); in check_erase_testset()
220 erase_check_erase(mt, 13); /*6012 */ in check_erase_testset()
223 check_load(mt, set[i], NULL); in check_erase_testset()
225 erase_check_load(mt, i); in check_erase_testset()
228 erase_check_erase(mt, 15); /*7003 */ in check_erase_testset()
231 check_load(mt, set[i], NULL); in check_erase_testset()
233 erase_check_load(mt, i); in check_erase_testset()
237 erase_check_erase(mt, 17); /*7008 *should* cause coalesce. */ in check_erase_testset()
240 check_load(mt, set[i], NULL); in check_erase_testset()
242 erase_check_load(mt, i); in check_erase_testset()
245 erase_check_erase(mt, 18); /*7012 */ in check_erase_testset()
248 check_load(mt, set[i], NULL); in check_erase_testset()
250 erase_check_load(mt, i); in check_erase_testset()
254 erase_check_erase(mt, 19); /*7015 */ in check_erase_testset()
257 check_load(mt, set[i], NULL); in check_erase_testset()
259 erase_check_load(mt, i); in check_erase_testset()
262 erase_check_erase(mt, 20); /*8003 */ in check_erase_testset()
265 check_load(mt, set[i], NULL); in check_erase_testset()
267 erase_check_load(mt, i); in check_erase_testset()
270 erase_check_erase(mt, 21); /*8002 */ in check_erase_testset()
273 check_load(mt, set[i], NULL); in check_erase_testset()
275 erase_check_load(mt, i); in check_erase_testset()
279 erase_check_erase(mt, 22); /*8008 */ in check_erase_testset()
282 check_load(mt, set[i], NULL); in check_erase_testset()
284 erase_check_load(mt, i); in check_erase_testset()
287 erase_check_erase(mt, i); in check_erase_testset()
291 check_load(mt, set[i], NULL); in check_erase_testset()
293 erase_check_load(mt, i); in check_erase_testset()
299 erase_check_insert(mt, i); in check_erase_testset()
303 erase_check_erase(mt, i); in check_erase_testset()
306 erase_check_load(mt, j); in check_erase_testset()
308 check_load(mt, set[j], NULL); in check_erase_testset()
313 erase_check_erase(mt, i); in check_erase_testset()
316 erase_check_load(mt, j); in check_erase_testset()
318 check_load(mt, set[j], NULL); in check_erase_testset()
321 erase_check_insert(mt, 8); in check_erase_testset()
322 erase_check_insert(mt, 9); in check_erase_testset()
323 erase_check_erase(mt, 8); in check_erase_testset()
330 #define erase_check_store_range(mt, a, i, ptr) mtree_test_store_range(mt, \ argument
580 static noinline void __init check_erase2_testset(struct maple_tree *mt, in check_erase2_testset() argument
589 MA_STATE(mas, mt, 0, 0); in check_erase2_testset()
596 MA_STATE(mas_start, mt, set[i+1], set[i+1]); in check_erase2_testset()
597 MA_STATE(mas_end, mt, set[i+2], set[i+2]); in check_erase2_testset()
624 erase_check_store_range(mt, set, i + 1, value); in check_erase2_testset()
652 erase_check_store_range(mt, set, i + 1, value); in check_erase2_testset()
657 check_erase(mt, set[i+1], xa_mk_value(set[i+1])); in check_erase2_testset()
661 mt_validate(mt); in check_erase2_testset()
663 MT_BUG_ON(mt, !mt_height(mt)); in check_erase2_testset()
665 mt_dump(mt, mt_dump_hex); in check_erase2_testset()
673 mt_for_each(mt, foo, addr, ULONG_MAX) { in check_erase2_testset()
676 pr_err("mt: %lu -> %p (%d)\n", addr+1, foo, check); in check_erase2_testset()
686 MT_BUG_ON(mt, check != entry_count); in check_erase2_testset()
699 MT_BUG_ON(mt, 1); in check_erase2_testset()
714 mt_validate(mt); in check_erase2_testset()
717 MT_BUG_ON(mt, check != entry_count); in check_erase2_testset()
719 MT_BUG_ON(mt, mtree_load(mas.tree, 0) != NULL); in check_erase2_testset()
725 static noinline void __init check_erase2_sets(struct maple_tree *mt) in check_erase2_sets() argument
33465 * Gap was found: mt 4041162752 gap_end 4041183232 in check_erase2_sets()
33497 MA_STATE(mas, mt, 0, 0); in check_erase2_sets()
33500 check_erase2_testset(mt, set, ARRAY_SIZE(set)); in check_erase2_sets()
33502 mtree_destroy(mt); in check_erase2_sets()
33504 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33505 check_erase2_testset(mt, set2, ARRAY_SIZE(set2)); in check_erase2_sets()
33507 MT_BUG_ON(mt, !!mt_find(mt, &start, 140735933906943UL)); in check_erase2_sets()
33508 mtree_destroy(mt); in check_erase2_sets()
33511 mt_init_flags(mt, 0); in check_erase2_sets()
33512 check_erase2_testset(mt, set3, ARRAY_SIZE(set3)); in check_erase2_sets()
33514 mtree_destroy(mt); in check_erase2_sets()
33516 mt_init_flags(mt, 0); in check_erase2_sets()
33517 check_erase2_testset(mt, set4, ARRAY_SIZE(set4)); in check_erase2_sets()
33525 mtree_destroy(mt); in check_erase2_sets()
33527 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33529 check_erase2_testset(mt, set5, ARRAY_SIZE(set5)); in check_erase2_sets()
33532 mtree_destroy(mt); in check_erase2_sets()
33534 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33535 check_erase2_testset(mt, set6, ARRAY_SIZE(set6)); in check_erase2_sets()
33537 mtree_destroy(mt); in check_erase2_sets()
33539 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33540 check_erase2_testset(mt, set7, ARRAY_SIZE(set7)); in check_erase2_sets()
33542 mtree_destroy(mt); in check_erase2_sets()
33544 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33545 check_erase2_testset(mt, set8, ARRAY_SIZE(set8)); in check_erase2_sets()
33547 mtree_destroy(mt); in check_erase2_sets()
33549 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33550 check_erase2_testset(mt, set9, ARRAY_SIZE(set9)); in check_erase2_sets()
33552 mtree_destroy(mt); in check_erase2_sets()
33554 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33555 check_erase2_testset(mt, set10, ARRAY_SIZE(set10)); in check_erase2_sets()
33557 mtree_destroy(mt); in check_erase2_sets()
33560 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33561 check_erase2_testset(mt, set11, ARRAY_SIZE(set11)); in check_erase2_sets()
33564 MT_BUG_ON(mt, mas.last != 140014592573439); in check_erase2_sets()
33565 mtree_destroy(mt); in check_erase2_sets()
33568 mas.tree = mt; in check_erase2_sets()
33571 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33572 check_erase2_testset(mt, set12, ARRAY_SIZE(set12)); in check_erase2_sets()
33580 mtree_destroy(mt); in check_erase2_sets()
33583 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33584 check_erase2_testset(mt, set13, ARRAY_SIZE(set13)); in check_erase2_sets()
33585 mtree_erase(mt, 140373516443648); in check_erase2_sets()
33589 mtree_destroy(mt); in check_erase2_sets()
33590 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33591 check_erase2_testset(mt, set14, ARRAY_SIZE(set14)); in check_erase2_sets()
33593 mtree_destroy(mt); in check_erase2_sets()
33595 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33596 check_erase2_testset(mt, set15, ARRAY_SIZE(set15)); in check_erase2_sets()
33598 mtree_destroy(mt); in check_erase2_sets()
33603 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33604 check_erase2_testset(mt, set16, ARRAY_SIZE(set16)); in check_erase2_sets()
33607 MT_BUG_ON(mt, mas.last != 139921865547775); in check_erase2_sets()
33609 mtree_destroy(mt); in check_erase2_sets()
33618 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33619 check_erase2_testset(mt, set17, ARRAY_SIZE(set17)); in check_erase2_sets()
33622 MT_BUG_ON(mt, mas.last != 139953197322239); in check_erase2_sets()
33623 /* MT_BUG_ON(mt, mas.index != 139953197318144); */ in check_erase2_sets()
33625 mtree_destroy(mt); in check_erase2_sets()
33634 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33635 check_erase2_testset(mt, set18, ARRAY_SIZE(set18)); in check_erase2_sets()
33638 MT_BUG_ON(mt, mas.last != 140222968475647); in check_erase2_sets()
33639 /*MT_BUG_ON(mt, mas.index != 140222966259712); */ in check_erase2_sets()
33641 mtree_destroy(mt); in check_erase2_sets()
33652 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33653 check_erase2_testset(mt, set19, ARRAY_SIZE(set19)); in check_erase2_sets()
33657 MT_BUG_ON(mt, entry != xa_mk_value(140656779083776)); in check_erase2_sets()
33659 MT_BUG_ON(mt, entry != xa_mk_value(140656766251008)); in check_erase2_sets()
33661 mtree_destroy(mt); in check_erase2_sets()
33668 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33669 check_erase2_testset(mt, set20, ARRAY_SIZE(set20)); in check_erase2_sets()
33671 check_load(mt, 94849009414144, NULL); in check_erase2_sets()
33673 mtree_destroy(mt); in check_erase2_sets()
33676 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33677 check_erase2_testset(mt, set21, ARRAY_SIZE(set21)); in check_erase2_sets()
33679 mt_validate(mt); in check_erase2_sets()
33681 mtree_destroy(mt); in check_erase2_sets()
33684 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33685 check_erase2_testset(mt, set22, ARRAY_SIZE(set22)); in check_erase2_sets()
33687 mt_validate(mt); in check_erase2_sets()
33688 ptr = mtree_load(mt, 140551363362816); in check_erase2_sets()
33689 MT_BUG_ON(mt, ptr == mtree_load(mt, 140551363420159)); in check_erase2_sets()
33691 mtree_destroy(mt); in check_erase2_sets()
33694 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33695 check_erase2_testset(mt, set23, ARRAY_SIZE(set23)); in check_erase2_sets()
33698 mt_validate(mt); in check_erase2_sets()
33699 mtree_destroy(mt); in check_erase2_sets()
33703 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33704 check_erase2_testset(mt, set24, ARRAY_SIZE(set24)); in check_erase2_sets()
33707 mt_validate(mt); in check_erase2_sets()
33708 mtree_destroy(mt); in check_erase2_sets()
33711 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33712 check_erase2_testset(mt, set25, ARRAY_SIZE(set25)); in check_erase2_sets()
33715 mt_validate(mt); in check_erase2_sets()
33716 mtree_destroy(mt); in check_erase2_sets()
33721 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33722 check_erase2_testset(mt, set26, ARRAY_SIZE(set26)); in check_erase2_sets()
33725 MT_BUG_ON(mt, mas.last != 140109040959487); in check_erase2_sets()
33727 mt_validate(mt); in check_erase2_sets()
33728 mtree_destroy(mt); in check_erase2_sets()
33733 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33734 check_erase2_testset(mt, set27, ARRAY_SIZE(set27)); in check_erase2_sets()
33736 MT_BUG_ON(mt, NULL != mtree_load(mt, 140415537422336)); in check_erase2_sets()
33738 mt_validate(mt); in check_erase2_sets()
33739 mtree_destroy(mt); in check_erase2_sets()
33743 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33744 check_erase2_testset(mt, set28, ARRAY_SIZE(set28)); in check_erase2_sets()
33749 MT_BUG_ON(mt, mas.index != 139918401601536); in check_erase2_sets()
33751 mt_validate(mt); in check_erase2_sets()
33752 mtree_destroy(mt); in check_erase2_sets()
33759 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33760 check_erase2_testset(mt, set29, ARRAY_SIZE(set29)); in check_erase2_sets()
33763 mt_validate(mt); in check_erase2_sets()
33764 mtree_destroy(mt); in check_erase2_sets()
33772 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33773 check_erase2_testset(mt, set30, ARRAY_SIZE(set30)); in check_erase2_sets()
33776 mt_validate(mt); in check_erase2_sets()
33777 mtree_destroy(mt); in check_erase2_sets()
33785 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33786 check_erase2_testset(mt, set31, ARRAY_SIZE(set31)); in check_erase2_sets()
33789 mt_validate(mt); in check_erase2_sets()
33790 mtree_destroy(mt); in check_erase2_sets()
33794 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33795 check_erase2_testset(mt, set32, ARRAY_SIZE(set32)); in check_erase2_sets()
33798 mt_validate(mt); in check_erase2_sets()
33799 mtree_destroy(mt); in check_erase2_sets()
33803 * mt 140582827569152 gap_end 140582869532672 in check_erase2_sets()
33814 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33815 check_erase2_testset(mt, set33, ARRAY_SIZE(set33)); in check_erase2_sets()
33818 MT_BUG_ON(mt, mas.last != 140583003750399); in check_erase2_sets()
33820 mt_validate(mt); in check_erase2_sets()
33821 mtree_destroy(mt); in check_erase2_sets()
33829 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33830 check_erase2_testset(mt, set34, ARRAY_SIZE(set34)); in check_erase2_sets()
33833 mt_validate(mt); in check_erase2_sets()
33834 mtree_destroy(mt); in check_erase2_sets()
33839 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33840 check_erase2_testset(mt, set35, ARRAY_SIZE(set35)); in check_erase2_sets()
33843 mt_validate(mt); in check_erase2_sets()
33844 mtree_destroy(mt); in check_erase2_sets()
33849 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33850 check_erase2_testset(mt, set36, ARRAY_SIZE(set36)); in check_erase2_sets()
33853 mt_validate(mt); in check_erase2_sets()
33854 mtree_destroy(mt); in check_erase2_sets()
33857 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33858 check_erase2_testset(mt, set37, ARRAY_SIZE(set37)); in check_erase2_sets()
33860 MT_BUG_ON(mt, NULL != mtree_load(mt, 94637033459712)); in check_erase2_sets()
33861 mt_validate(mt); in check_erase2_sets()
33862 mtree_destroy(mt); in check_erase2_sets()
33865 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33866 check_erase2_testset(mt, set38, ARRAY_SIZE(set38)); in check_erase2_sets()
33868 MT_BUG_ON(mt, NULL != mtree_load(mt, 94637033459712)); in check_erase2_sets()
33869 mt_validate(mt); in check_erase2_sets()
33870 mtree_destroy(mt); in check_erase2_sets()
33873 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33874 check_erase2_testset(mt, set39, ARRAY_SIZE(set39)); in check_erase2_sets()
33876 mt_validate(mt); in check_erase2_sets()
33877 mtree_destroy(mt); in check_erase2_sets()
33880 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33881 check_erase2_testset(mt, set40, ARRAY_SIZE(set40)); in check_erase2_sets()
33883 mt_validate(mt); in check_erase2_sets()
33884 mtree_destroy(mt); in check_erase2_sets()
33887 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33888 check_erase2_testset(mt, set41, ARRAY_SIZE(set41)); in check_erase2_sets()
33890 mt_validate(mt); in check_erase2_sets()
33891 mtree_destroy(mt); in check_erase2_sets()
33896 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33897 check_erase2_testset(mt, set42, ARRAY_SIZE(set42)); in check_erase2_sets()
33900 MT_BUG_ON(mt, mas.last != 4041211903); in check_erase2_sets()
33902 mt_validate(mt); in check_erase2_sets()
33903 mtree_destroy(mt); in check_erase2_sets()
33908 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33909 check_erase2_testset(mt, set43, ARRAY_SIZE(set43)); in check_erase2_sets()
33912 mt_validate(mt); in check_erase2_sets()
33913 mtree_destroy(mt); in check_erase2_sets()
33952 MA_STATE(mas, test->mt, 0, 0); in rcu_reader_fwd()
34062 MA_STATE(mas, test->mt, 0, 0); in rcu_reader_rev()
34124 mt_dump(test->mt, mt_dump_dec); in rcu_reader_rev()
34187 static void rcu_stress_rev(struct maple_tree *mt, struct rcu_test_struct2 *test, in rcu_stress_rev() argument
34207 mtree_store_range(mt, start, end, in rcu_stress_rev()
34217 mtree_store_range(mt, start, end, in rcu_stress_rev()
34228 mtree_store_range(mt, start, end, NULL, GFP_KERNEL); in rcu_stress_rev()
34235 mtree_store_range(mt, start, end, in rcu_stress_rev()
34246 static void rcu_stress_fwd(struct maple_tree *mt, struct rcu_test_struct2 *test, in rcu_stress_fwd() argument
34264 mtree_store_range(mt, start, end, in rcu_stress_fwd()
34274 mtree_store_range(mt, start, end, in rcu_stress_fwd()
34285 mtree_store_range(mt, start, end, NULL, GFP_KERNEL); in rcu_stress_fwd()
34292 mtree_store_range(mt, start, end, in rcu_stress_fwd()
34314 static void rcu_stress(struct maple_tree *mt, bool forward) in rcu_stress() argument
34324 test.mt = mt; in rcu_stress()
34336 mtree_store_range(mt, seed, r, in rcu_stress()
34368 mtree_store_range(mt, test.index[add], test.last[add], in rcu_stress()
34372 mt_set_in_rcu(mt); in rcu_stress()
34378 rcu_stress_fwd(mt, &test, count, test_reader); in rcu_stress()
34380 rcu_stress_rev(mt, &test, count, test_reader); in rcu_stress()
34386 mt_validate(mt); in rcu_stress()
34391 struct maple_tree *mt; /* the maple tree */ member
34470 entry = mtree_load(test->mt, test->index); in rcu_val()
34471 MT_BUG_ON(test->mt, eval_rcu_entry(test, entry, &update_2, in rcu_val()
34491 MA_STATE(mas, test->mt, test->range_start, test->range_start); in rcu_loop()
34512 MT_BUG_ON(test->mt, entry != expected); in rcu_loop()
34520 MT_BUG_ON(test->mt, eval_rcu_entry(test, entry, in rcu_loop()
34533 void run_check_rcu(struct maple_tree *mt, struct rcu_test_struct *vals) in run_check_rcu() argument
34540 mt_set_in_rcu(mt); in run_check_rcu()
34541 MT_BUG_ON(mt, !mt_in_rcu(mt)); in run_check_rcu()
34556 mtree_store_range(mt, vals->index, vals->last, vals->entry2, in run_check_rcu()
34562 MT_BUG_ON(mt, !vals->seen_entry2); in run_check_rcu()
34568 MA_STATE(mas, test->mt, test->index, test->index); in rcu_slot_store_reader()
34585 static noinline void run_check_rcu_slot_store(struct maple_tree *mt) in run_check_rcu_slot_store() argument
34590 struct rcu_test_struct3 test = {.stop = false, .mt = mt}; in run_check_rcu_slot_store()
34598 mtree_store_range(mt, i * len, i * len + len - 1, in run_check_rcu_slot_store()
34602 mt_set_in_rcu(mt); in run_check_rcu_slot_store()
34603 MT_BUG_ON(mt, !mt_in_rcu(mt)); in run_check_rcu_slot_store()
34617 mtree_store_range(mt, --start, ++end, xa_mk_value(100), in run_check_rcu_slot_store()
34626 mt_validate(mt); in run_check_rcu_slot_store()
34630 void run_check_rcu_slowread(struct maple_tree *mt, struct rcu_test_struct *vals) in run_check_rcu_slowread() argument
34638 mt_set_in_rcu(mt); in run_check_rcu_slowread()
34639 MT_BUG_ON(mt, !mt_in_rcu(mt)); in run_check_rcu_slowread()
34656 mtree_store(mt, index, in run_check_rcu_slowread()
34667 MT_BUG_ON(mt, !vals->seen_entry2); in run_check_rcu_slowread()
34668 MT_BUG_ON(mt, !vals->seen_entry3); in run_check_rcu_slowread()
34669 MT_BUG_ON(mt, !vals->seen_both); in run_check_rcu_slowread()
34672 static noinline void __init check_rcu_simulated(struct maple_tree *mt) in check_rcu_simulated() argument
34678 MA_STATE(mas_writer, mt, 0, 0); in check_rcu_simulated()
34679 MA_STATE(mas_reader, mt, target, target); in check_rcu_simulated()
34683 mt_set_in_rcu(mt); in check_rcu_simulated()
34695 MT_BUG_ON(mt, mas_walk(&mas_reader) != xa_mk_value(target/10)); in check_rcu_simulated()
34699 MT_BUG_ON(mt, mas_walk(&mas_reader) != xa_mk_value(val)); in check_rcu_simulated()
34712 MT_BUG_ON(mt, mas_walk(&mas_reader) != xa_mk_value(target/10)); in check_rcu_simulated()
34716 MT_BUG_ON(mt, mas_walk(&mas_reader) != xa_mk_value(val)); in check_rcu_simulated()
34729 MT_BUG_ON(mt, mas_walk(&mas_reader) != xa_mk_value(target/10)); in check_rcu_simulated()
34733 MT_BUG_ON(mt, mas_walk(&mas_reader) != xa_mk_value(target/10)); in check_rcu_simulated()
34746 MT_BUG_ON(mt, mas_walk(&mas_reader) != xa_mk_value(target/10)); in check_rcu_simulated()
34750 MT_BUG_ON(mt, mas_walk(&mas_reader) != xa_mk_value(val)); in check_rcu_simulated()
34762 MT_BUG_ON(mt, mas_walk(&mas_reader) != xa_mk_value(target/10)); in check_rcu_simulated()
34766 MT_BUG_ON(mt, mas_walk(&mas_reader) != xa_mk_value(val)); in check_rcu_simulated()
34778 MT_BUG_ON(mt, mas_walk(&mas_reader) != xa_mk_value(target/10)); in check_rcu_simulated()
34782 MT_BUG_ON(mt, mas_walk(&mas_reader) != xa_mk_value(val)); in check_rcu_simulated()
34803 MT_BUG_ON(mt, mas_walk(&mas_reader) != xa_mk_value(target/10)); in check_rcu_simulated()
34808 MT_BUG_ON(mt, mas_next(&mas_reader, ULONG_MAX) != xa_mk_value(val)); in check_rcu_simulated()
34822 MT_BUG_ON(mt, mas_walk(&mas_reader) != xa_mk_value(target/10)); in check_rcu_simulated()
34827 MT_BUG_ON(mt, mas_prev(&mas_reader, 0) != xa_mk_value(val)); in check_rcu_simulated()
34833 static noinline void __init check_rcu_threaded(struct maple_tree *mt) in check_rcu_threaded() argument
34843 mtree_store_range(mt, i*10, i*10 + 5, in check_rcu_threaded()
34847 vals.mt = mt; in check_rcu_threaded()
34858 run_check_rcu(mt, &vals); in check_rcu_threaded()
34859 mtree_destroy(mt); in check_rcu_threaded()
34861 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_rcu_threaded()
34863 mtree_store_range(mt, i*10, i*10 + 5, in check_rcu_threaded()
34870 vals.mt = mt; in check_rcu_threaded()
34879 run_check_rcu(mt, &vals); in check_rcu_threaded()
34880 mtree_destroy(mt); in check_rcu_threaded()
34883 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_rcu_threaded()
34884 run_check_rcu_slot_store(mt); in check_rcu_threaded()
34885 mtree_destroy(mt); in check_rcu_threaded()
34888 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_rcu_threaded()
34889 rcu_stress(mt, true); in check_rcu_threaded()
34890 mtree_destroy(mt); in check_rcu_threaded()
34893 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_rcu_threaded()
34894 rcu_stress(mt, false); in check_rcu_threaded()
34895 mtree_destroy(mt); in check_rcu_threaded()
34898 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_rcu_threaded()
34900 mtree_store_range(mt, i*10, i*10 + 5, in check_rcu_threaded()
34907 vals.mt = mt; in check_rcu_threaded()
34928 run_check_rcu_slowread(mt, &vals); in check_rcu_threaded()
34982 static void check_dfs_preorder(struct maple_tree *mt) in check_dfs_preorder() argument
34986 MA_STATE(mas, mt, 0, 0); in check_dfs_preorder()
34993 check_seq(mt, max, false); in check_dfs_preorder()
34998 MT_BUG_ON(mt, count != e); in check_dfs_preorder()
34999 mtree_destroy(mt); in check_dfs_preorder()
35001 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_dfs_preorder()
35007 check_seq(mt, max, false); in check_dfs_preorder()
35013 MT_BUG_ON(mt, count != e); in check_dfs_preorder()
35014 mtree_destroy(mt); in check_dfs_preorder()
35016 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_dfs_preorder()
35019 check_rev_seq(mt, max, false); in check_dfs_preorder()
35025 MT_BUG_ON(mt, count != e); in check_dfs_preorder()
35026 mtree_destroy(mt); in check_dfs_preorder()
35099 static noinline void __init check_prealloc(struct maple_tree *mt) in check_prealloc() argument
35107 MA_STATE(mas, mt, 10, 20); in check_prealloc()
35112 mtree_test_store_range(mt, i * 10, i * 10 + 5, &i); in check_prealloc()
35118 MT_BUG_ON(mt, mas.store_type != wr_spanning_store); in check_prealloc()
35119 MT_BUG_ON(mt, mas_is_err(&mas)); in check_prealloc()
35123 MT_BUG_ON(mt, allocated == 0); in check_prealloc()
35124 MT_BUG_ON(mt, allocated != 1 + (height - vacant_height) * 3); in check_prealloc()
35127 MT_BUG_ON(mt, allocated != 0); in check_prealloc()
35130 MT_BUG_ON(mt, mas_preallocate(&mas, ptr, GFP_KERNEL) != 0); in check_prealloc()
35134 MT_BUG_ON(mt, allocated == 0); in check_prealloc()
35135 MT_BUG_ON(mt, allocated != 1 + (height - vacant_height) * 3); in check_prealloc()
35136 MT_BUG_ON(mt, mas_preallocate(&mas, ptr, GFP_KERNEL) != 0); in check_prealloc()
35139 MT_BUG_ON(mt, allocated != 0); in check_prealloc()
35142 MT_BUG_ON(mt, mas_preallocate(&mas, ptr, GFP_KERNEL) != 0); in check_prealloc()
35146 MT_BUG_ON(mt, allocated != 1 + (height - vacant_height) * 3); in check_prealloc()
35148 MT_BUG_ON(mt, mas_allocated(&mas) != allocated - 1); in check_prealloc()
35151 MT_BUG_ON(mt, mas_preallocate(&mas, ptr, GFP_KERNEL) != 0); in check_prealloc()
35154 MT_BUG_ON(mt, allocated != 0); in check_prealloc()
35156 MT_BUG_ON(mt, mas_preallocate(&mas, ptr, GFP_KERNEL) != 0); in check_prealloc()
35160 MT_BUG_ON(mt, allocated != 1 + (height - vacant_height) * 3); in check_prealloc()
35162 MT_BUG_ON(mt, mas_allocated(&mas) != allocated - 1); in check_prealloc()
35163 MT_BUG_ON(mt, mas_preallocate(&mas, ptr, GFP_KERNEL) != 0); in check_prealloc()
35166 MT_BUG_ON(mt, allocated != 0); in check_prealloc()
35170 MT_BUG_ON(mt, mas_preallocate(&mas, ptr, GFP_KERNEL) != 0); in check_prealloc()
35174 MT_BUG_ON(mt, allocated != 1 + (height - vacant_height) * 3); in check_prealloc()
35176 MT_BUG_ON(mt, mas_allocated(&mas) != 0); in check_prealloc()
35180 MT_BUG_ON(mt, mas_preallocate(&mas, ptr, GFP_KERNEL) != 0); in check_prealloc()
35182 MT_BUG_ON(mt, allocated != 0); in check_prealloc()
35184 MT_BUG_ON(mt, mas_allocated(&mas) != 0); in check_prealloc()
35187 MT_BUG_ON(mt, mas_preallocate(&mas, ptr, GFP_KERNEL) != 0); in check_prealloc()
35190 MT_BUG_ON(mt, allocated != 0); in check_prealloc()
35192 MT_BUG_ON(mt, mas_allocated(&mas) != 0); in check_prealloc()
35196 MT_BUG_ON(mt, mas_preallocate(&mas, ptr, GFP_KERNEL) != 0); in check_prealloc()
35200 MT_BUG_ON(mt, allocated != 1 + (height - vacant_height) * 2); in check_prealloc()
35202 MT_BUG_ON(mt, mas_allocated(&mas) != 0); in check_prealloc()
35206 MT_BUG_ON(mt, mas_preallocate(&mas, ptr, GFP_KERNEL & GFP_NOWAIT) == 0); in check_prealloc()
35209 MT_BUG_ON(mt, allocated != 0); in check_prealloc()
35214 MT_BUG_ON(mt, mas_preallocate(&mas, ptr, GFP_KERNEL) != 0); in check_prealloc()
35218 MT_BUG_ON(mt, allocated == 0); in check_prealloc()
35224 MT_BUG_ON(mt, allocated != height * 3 + 1); in check_prealloc()
35226 MT_BUG_ON(mt, mas_allocated(&mas) != 0); in check_prealloc()
35229 MT_BUG_ON(mt, mas_preallocate(&mas, ptr, GFP_KERNEL & GFP_NOWAIT) == 0); in check_prealloc()
35232 MT_BUG_ON(mt, allocated != 0); in check_prealloc()
35235 mt_set_in_rcu(mt); in check_prealloc()
35237 MT_BUG_ON(mt, mas_preallocate(&mas, ptr, GFP_KERNEL) != 0); in check_prealloc()
35239 MT_BUG_ON(mt, allocated != 0); in check_prealloc()
35241 MT_BUG_ON(mt, mas_preallocate(&mas, ptr, GFP_KERNEL) != 0); in check_prealloc()
35243 MT_BUG_ON(mt, allocated != 1); in check_prealloc()
35249 static noinline void __init check_spanning_write(struct maple_tree *mt) in check_spanning_write() argument
35252 MA_STATE(mas, mt, 1200, 2380); in check_spanning_write()
35255 mtree_test_store_range(mt, i * 10, i * 10 + 5, &i); in check_spanning_write()
35257 mtree_lock(mt); in check_spanning_write()
35260 MT_BUG_ON(mt, mas_walk(&mas) != NULL); in check_spanning_write()
35261 mtree_unlock(mt); in check_spanning_write()
35262 mtree_destroy(mt); in check_spanning_write()
35265 mtree_test_store_range(mt, i * 10, i * 10 + 5, &i); in check_spanning_write()
35267 mtree_lock(mt); in check_spanning_write()
35271 MT_BUG_ON(mt, mas_walk(&mas) != NULL); in check_spanning_write()
35272 mtree_unlock(mt); in check_spanning_write()
35273 mt_validate(mt); in check_spanning_write()
35274 mtree_destroy(mt); in check_spanning_write()
35277 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_spanning_write()
35279 mtree_test_store_range(mt, i * 10, i * 10 + 5, &i); in check_spanning_write()
35282 mtree_lock(mt); in check_spanning_write()
35285 MT_BUG_ON(mt, mas_walk(&mas) != NULL); in check_spanning_write()
35286 mtree_unlock(mt); in check_spanning_write()
35287 mtree_destroy(mt); in check_spanning_write()
35290 mt_init_flags(mt, 0); in check_spanning_write()
35292 mtree_test_store_range(mt, i * 10, i * 10 + 5, &i); in check_spanning_write()
35295 mtree_lock(mt); in check_spanning_write()
35298 MT_BUG_ON(mt, mas_walk(&mas) != NULL); in check_spanning_write()
35299 mtree_unlock(mt); in check_spanning_write()
35300 mtree_destroy(mt); in check_spanning_write()
35303 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_spanning_write()
35305 mtree_test_store_range(mt, i * 10, i * 10 + 5, &i); in check_spanning_write()
35308 mtree_lock(mt); in check_spanning_write()
35311 MT_BUG_ON(mt, mas_walk(&mas) != NULL); in check_spanning_write()
35312 mtree_unlock(mt); in check_spanning_write()
35313 mtree_destroy(mt); in check_spanning_write()
35316 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_spanning_write()
35318 mtree_test_store_range(mt, i * 10, i * 10 + 5, &i); in check_spanning_write()
35321 mtree_lock(mt); in check_spanning_write()
35324 MT_BUG_ON(mt, mas_walk(&mas) != NULL); in check_spanning_write()
35325 mtree_unlock(mt); in check_spanning_write()
35326 mtree_destroy(mt); in check_spanning_write()
35329 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_spanning_write()
35331 mtree_test_store_range(mt, i * 10, i * 10 + 5, &i); in check_spanning_write()
35334 mtree_lock(mt); in check_spanning_write()
35337 MT_BUG_ON(mt, mas_walk(&mas) != NULL); in check_spanning_write()
35338 mtree_unlock(mt); in check_spanning_write()
35339 mtree_destroy(mt); in check_spanning_write()
35345 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_spanning_write()
35347 mtree_test_store_range(mt, i * 10, i * 10 + 5, &i); in check_spanning_write()
35350 mtree_lock(mt); in check_spanning_write()
35353 MT_BUG_ON(mt, mas_walk(&mas) != NULL); in check_spanning_write()
35354 mtree_unlock(mt); in check_spanning_write()
35355 mtree_destroy(mt); in check_spanning_write()
35361 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_spanning_write()
35363 mtree_test_store_range(mt, i * 10, i * 10 + 5, &i); in check_spanning_write()
35365 mtree_lock(mt); in check_spanning_write()
35368 MT_BUG_ON(mt, mas_walk(&mas) != NULL); in check_spanning_write()
35369 mtree_unlock(mt); in check_spanning_write()
35370 mtree_destroy(mt); in check_spanning_write()
35373 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_spanning_write()
35375 mtree_test_store_range(mt, i * 10, i * 10 + 5, &i); in check_spanning_write()
35376 mtree_lock(mt); in check_spanning_write()
35387 MT_BUG_ON(mt, (mas_data_end(&mas)) != mt_slot_count(mas.node) - 1); in check_spanning_write()
35390 mtree_unlock(mt); in check_spanning_write()
35391 mtree_destroy(mt); in check_spanning_write()
35394 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_spanning_write()
35396 mtree_test_store_range(mt, i * 10, i * 10 + 5, &i); in check_spanning_write()
35398 mtree_lock(mt); in check_spanning_write()
35401 MT_BUG_ON(mt, mas_walk(&mas) != NULL); in check_spanning_write()
35402 mtree_unlock(mt); in check_spanning_write()
35403 mtree_destroy(mt); in check_spanning_write()
35405 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_spanning_write()
35407 mtree_test_store_range(mt, i * 10, i * 10 + 5, &i); in check_spanning_write()
35409 mtree_lock(mt); in check_spanning_write()
35412 mtree_unlock(mt); in check_spanning_write()
35417 static noinline void __init check_null_expand(struct maple_tree *mt) in check_null_expand() argument
35421 MA_STATE(mas, mt, 959, 959); in check_null_expand()
35424 mtree_test_store_range(mt, i * 10, i * 10 + 5, &i); in check_null_expand()
35431 MT_BUG_ON(mt, mtree_load(mt, 963) != NULL); in check_null_expand()
35432 MT_BUG_ON(mt, data_end != mas_data_end(&mas)); in check_null_expand()
35440 MT_BUG_ON(mt, mtree_load(mt, 884) != NULL); in check_null_expand()
35441 MT_BUG_ON(mt, mtree_load(mt, 889) != NULL); in check_null_expand()
35443 MT_BUG_ON(mt, data_end != mas_data_end(&mas)); in check_null_expand()
35452 MT_BUG_ON(mt, mtree_load(mt, 899) != NULL); in check_null_expand()
35453 MT_BUG_ON(mt, mtree_load(mt, 900) != NULL); in check_null_expand()
35454 MT_BUG_ON(mt, mtree_load(mt, 905) != NULL); in check_null_expand()
35455 MT_BUG_ON(mt, mtree_load(mt, 906) != NULL); in check_null_expand()
35457 MT_BUG_ON(mt, data_end - 2 != mas_data_end(&mas)); in check_null_expand()
35466 MT_BUG_ON(mt, mtree_load(mt, 809) != NULL); in check_null_expand()
35467 MT_BUG_ON(mt, mtree_load(mt, 810) != NULL); in check_null_expand()
35468 MT_BUG_ON(mt, mtree_load(mt, 825) != NULL); in check_null_expand()
35469 MT_BUG_ON(mt, mtree_load(mt, 826) != NULL); in check_null_expand()
35471 MT_BUG_ON(mt, data_end - 4 != mas_data_end(&mas)); in check_null_expand()
35478 static noinline void __init check_nomem(struct maple_tree *mt) in check_nomem() argument
35480 MA_STATE(ms, mt, 1, 1); in check_nomem()
35482 MT_BUG_ON(mt, !mtree_empty(mt)); in check_nomem()
35487 MT_BUG_ON(mt, mtree_insert(mt, 1, &ms, GFP_ATOMIC) != -ENOMEM); in check_nomem()
35489 MT_BUG_ON(mt, mtree_insert(mt, 0, &ms, GFP_ATOMIC) != 0); in check_nomem()
35499 mtree_lock(mt); in check_nomem()
35501 MT_BUG_ON(mt, ms.node != MA_ERROR(-ENOMEM)); in check_nomem()
35503 MT_BUG_ON(mt, ms.status != ma_start); in check_nomem()
35504 mtree_unlock(mt); in check_nomem()
35505 MT_BUG_ON(mt, mtree_insert(mt, 2, mt, GFP_KERNEL) != 0); in check_nomem()
35506 mtree_lock(mt); in check_nomem()
35509 mtree_unlock(mt); in check_nomem()
35511 mtree_destroy(mt); in check_nomem()
35514 static noinline void __init check_locky(struct maple_tree *mt) in check_locky() argument
35516 MA_STATE(ms, mt, 2, 2); in check_locky()
35517 MA_STATE(reader, mt, 2, 2); in check_locky()
35520 mt_set_in_rcu(mt); in check_locky()
35526 mt_clear_in_rcu(mt); in check_locky()
35675 * @mt: The tree to build.
35683 static __init int build_full_tree(struct maple_tree *mt, unsigned int flags, in build_full_tree() argument
35686 MA_STATE(mas, mt, 0, 0); in build_full_tree()
35691 mt_init_flags(mt, flags); in build_full_tree()
35692 mtree_insert_range(mt, 0, ULONG_MAX, xa_mk_value(5), GFP_KERNEL); in build_full_tree()
35694 mtree_lock(mt); in build_full_tree()
35698 if (mt_height(mt) < height) { in build_full_tree()
35729 mtree_unlock(mt); in build_full_tree()
35731 MT_BUG_ON(mt, mt_height(mt) != height); in build_full_tree()
35732 /* pr_info("height:%u number of elements:%d\n", mt_height(mt), cnt); */ in build_full_tree()
35736 static noinline void __init check_mtree_dup(struct maple_tree *mt) in check_mtree_dup() argument
35743 mt_init_flags(mt, 0); in check_mtree_dup()
35744 mtree_store_range(mt, 0, 0, xa_mk_value(0), GFP_KERNEL); in check_mtree_dup()
35745 ret = mtree_dup(mt, &new, GFP_KERNEL); in check_mtree_dup()
35748 if (compare_tree(mt, &new)) in check_mtree_dup()
35751 mtree_destroy(mt); in check_mtree_dup()
35755 mt_init_flags(mt, 0); in check_mtree_dup()
35757 ret = mtree_dup(mt, &new, GFP_KERNEL); in check_mtree_dup()
35759 mtree_destroy(mt); in check_mtree_dup()
35763 mt_init_flags(mt, 0); in check_mtree_dup()
35766 ret = mtree_dup(mt, &new, GFP_KERNEL); in check_mtree_dup()
35768 mtree_destroy(mt); in check_mtree_dup()
35773 ret = build_full_tree(mt, 0, i); in check_mtree_dup()
35774 MT_BUG_ON(mt, ret); in check_mtree_dup()
35777 ret = mtree_dup(mt, &new, GFP_KERNEL); in check_mtree_dup()
35780 if (compare_tree(mt, &new)) in check_mtree_dup()
35783 mtree_destroy(mt); in check_mtree_dup()
35788 ret = build_full_tree(mt, MT_FLAGS_ALLOC_RANGE, i); in check_mtree_dup()
35789 MT_BUG_ON(mt, ret); in check_mtree_dup()
35792 ret = mtree_dup(mt, &new, GFP_KERNEL); in check_mtree_dup()
35795 if (compare_tree(mt, &new)) in check_mtree_dup()
35798 mtree_destroy(mt); in check_mtree_dup()
35805 mt_init_flags(mt, 0); in check_mtree_dup()
35808 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_mtree_dup()
35813 mtree_store_range(mt, j * 10, j * 10 + 5, in check_mtree_dup()
35817 ret = mtree_dup(mt, &new, GFP_KERNEL); in check_mtree_dup()
35820 if (compare_tree(mt, &new)) in check_mtree_dup()
35823 mtree_destroy(mt); in check_mtree_dup()
35828 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_mtree_dup()
35830 mtree_store_range(mt, j * 10, j * 10 + 5, in check_mtree_dup()
35837 ret = mtree_dup(mt, &new, GFP_NOWAIT); in check_mtree_dup()
35840 mtree_destroy(mt); in check_mtree_dup()
35846 mt_init_flags(mt, 0); in check_mtree_dup()
35849 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_mtree_dup()
35854 mtree_store_range(mt, j * 10, j * 10 + 5, in check_mtree_dup()
35865 ret = mtree_dup(mt, &new, GFP_NOWAIT); in check_mtree_dup()
35870 mtree_destroy(mt); in check_mtree_dup()
35875 if (compare_tree(mt, &new)) in check_mtree_dup()
35878 mtree_destroy(mt); in check_mtree_dup()
35888 static inline void check_spanning_store_height(struct maple_tree *mt) in check_spanning_store_height() argument
35892 MA_STATE(mas, mt, 0, 0); in check_spanning_store_height()
35894 while (mt_height(mt) != 3) { in check_spanning_store_height()
35904 MT_BUG_ON(mt, mas_mt_height(&mas) != 2); in check_spanning_store_height()
35913 static void check_collapsing_rebalance(struct maple_tree *mt) in check_collapsing_rebalance() argument
35916 MA_STATE(mas, mt, ULONG_MAX, ULONG_MAX); in check_collapsing_rebalance()
35919 while (mt_height(mt) < 6) { in check_collapsing_rebalance()
35920 mtree_store_range(mt, i, i + 10, xa_mk_value(i), GFP_KERNEL); in check_collapsing_rebalance()
35929 mtree_unlock(mt); in check_collapsing_rebalance()
35935 struct maple_tree *mt = (struct maple_tree *)maple_tree; in writer2() local
35936 MA_STATE(mas, mt, 6, 10); in writer2()
35946 * @mt: The tree to build.
35953 static void check_nomem_writer_race(struct maple_tree *mt) in check_nomem_writer_race() argument
35955 MA_STATE(mas, mt, 0, 5); in check_nomem_writer_race()
35959 mtree_store_range(mt, 0, 5, xa_mk_value(0xA), GFP_KERNEL); in check_nomem_writer_race()
35960 mtree_store_range(mt, 6, 10, NULL, GFP_KERNEL); in check_nomem_writer_race()
35961 mtree_store_range(mt, 11, 15, xa_mk_value(0xB), GFP_KERNEL); in check_nomem_writer_race()
35964 mt_set_private(mt); in check_nomem_writer_race()
35967 mtree_lock(mt); in check_nomem_writer_race()
35972 check_load(mt, 6, xa_mk_value(0xC)); in check_nomem_writer_race()
35973 mtree_unlock(mt); in check_nomem_writer_race()
35977 mtree_store_range(mt, 0, 5, xa_mk_value(0xA), GFP_KERNEL); in check_nomem_writer_race()
35978 mtree_store_range(mt, 6, 10, NULL, GFP_KERNEL); in check_nomem_writer_race()
35983 mt_set_private(mt); in check_nomem_writer_race()
35986 mtree_lock(mt); in check_nomem_writer_race()
35990 check_load(mt, 6, xa_mk_value(0xC)); in check_nomem_writer_race()
35994 mtree_unlock(mt); in check_nomem_writer_race()
36001 static inline int check_vma_modification(struct maple_tree *mt) in check_vma_modification() argument
36004 MA_STATE(mas, mt, 0, 0); in check_vma_modification()
36006 mtree_lock(mt); in check_vma_modification()
36023 mt_dump(mt, mt_dump_hex); in check_vma_modification()
36026 mtree_unlock(mt); in check_vma_modification()
36129 enum maple_type mt = mte_node_type(mas->node); in get_last_index() local
36130 unsigned long *pivots = ma_pivots(node, mt); in get_last_index()