Lines Matching refs: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
45 struct maple_tree *mt; member
64 static noinline void __init check_erase(struct maple_tree *mt, unsigned long index, in check_erase() argument
67 MT_BUG_ON(mt, mtree_test_erase(mt, index) != ptr); in check_erase()
70 #define erase_check_load(mt, i) check_load(mt, set[i], entry[i%2]) argument
71 #define erase_check_insert(mt, i) check_insert(mt, set[i], entry[i%2]) argument
72 #define erase_check_erase(mt, i) check_erase(mt, set[i], entry[i%2]) argument
74 static noinline void __init check_erase_testset(struct maple_tree *mt) in check_erase_testset() argument
92 void *entry[2] = { ptr, mt }; in check_erase_testset()
97 mt_set_in_rcu(mt); in check_erase_testset()
99 erase_check_insert(mt, i); in check_erase_testset()
101 erase_check_load(mt, i); in check_erase_testset()
104 erase_check_erase(mt, 1); in check_erase_testset()
105 erase_check_load(mt, 0); in check_erase_testset()
106 check_load(mt, set[1], NULL); in check_erase_testset()
108 erase_check_load(mt, i); in check_erase_testset()
111 erase_check_erase(mt, 2); in check_erase_testset()
112 erase_check_load(mt, 0); in check_erase_testset()
113 check_load(mt, set[1], NULL); in check_erase_testset()
114 check_load(mt, set[2], NULL); in check_erase_testset()
116 erase_check_insert(mt, 1); in check_erase_testset()
117 erase_check_insert(mt, 2); in check_erase_testset()
120 erase_check_load(mt, i); in check_erase_testset()
123 erase_check_load(mt, 3); in check_erase_testset()
124 erase_check_erase(mt, 1); in check_erase_testset()
125 erase_check_load(mt, 0); in check_erase_testset()
126 check_load(mt, set[1], NULL); in check_erase_testset()
128 erase_check_load(mt, i); in check_erase_testset()
134 root_node = mt->ma_root; in check_erase_testset()
135 erase_check_insert(mt, 1); in check_erase_testset()
137 erase_check_load(mt, 0); in check_erase_testset()
138 check_load(mt, 5016, NULL); in check_erase_testset()
139 erase_check_load(mt, 1); in check_erase_testset()
140 check_load(mt, 5013, NULL); in check_erase_testset()
141 erase_check_load(mt, 2); in check_erase_testset()
142 check_load(mt, 5018, NULL); in check_erase_testset()
143 erase_check_load(mt, 3); in check_erase_testset()
145 erase_check_erase(mt, 2); /* erase 5017 to check append */ in check_erase_testset()
146 erase_check_load(mt, 0); in check_erase_testset()
147 check_load(mt, 5016, NULL); in check_erase_testset()
148 erase_check_load(mt, 1); in check_erase_testset()
149 check_load(mt, 5013, NULL); in check_erase_testset()
150 check_load(mt, set[2], NULL); in check_erase_testset()
151 check_load(mt, 5018, NULL); in check_erase_testset()
153 erase_check_load(mt, 3); in check_erase_testset()
155 root_node = mt->ma_root; in check_erase_testset()
156 erase_check_insert(mt, 2); in check_erase_testset()
158 erase_check_load(mt, 0); in check_erase_testset()
159 check_load(mt, 5016, NULL); in check_erase_testset()
160 erase_check_load(mt, 1); in check_erase_testset()
161 check_load(mt, 5013, NULL); in check_erase_testset()
162 erase_check_load(mt, 2); in check_erase_testset()
163 check_load(mt, 5018, NULL); in check_erase_testset()
164 erase_check_load(mt, 3); in check_erase_testset()
167 erase_check_erase(mt, 2); /* erase 5017 to check append */ in check_erase_testset()
168 erase_check_load(mt, 0); in check_erase_testset()
169 check_load(mt, 5016, NULL); in check_erase_testset()
170 check_load(mt, set[2], NULL); in check_erase_testset()
171 erase_check_erase(mt, 0); /* erase 5015 to check append */ in check_erase_testset()
172 check_load(mt, set[0], NULL); in check_erase_testset()
173 check_load(mt, 5016, NULL); in check_erase_testset()
174 erase_check_insert(mt, 4); /* 1000 < Should not split. */ in check_erase_testset()
175 check_load(mt, set[0], NULL); in check_erase_testset()
176 check_load(mt, 5016, NULL); in check_erase_testset()
177 erase_check_load(mt, 1); in check_erase_testset()
178 check_load(mt, 5013, NULL); in check_erase_testset()
179 check_load(mt, set[2], NULL); in check_erase_testset()
180 check_load(mt, 5018, NULL); in check_erase_testset()
181 erase_check_load(mt, 4); in check_erase_testset()
182 check_load(mt, 999, NULL); in check_erase_testset()
183 check_load(mt, 1001, NULL); in check_erase_testset()
184 erase_check_load(mt, 4); in check_erase_testset()
185 if (mt_in_rcu(mt)) in check_erase_testset()
186 MT_BUG_ON(mt, root_node == mt->ma_root); in check_erase_testset()
188 MT_BUG_ON(mt, root_node != mt->ma_root); in check_erase_testset()
191 MT_BUG_ON(mt, !mte_is_leaf(mt->ma_root)); in check_erase_testset()
195 erase_check_insert(mt, 0); in check_erase_testset()
196 erase_check_insert(mt, 2); in check_erase_testset()
199 erase_check_insert(mt, i); in check_erase_testset()
201 erase_check_load(mt, j); in check_erase_testset()
204 erase_check_erase(mt, 14); /*6015 */ in check_erase_testset()
207 check_load(mt, set[i], NULL); in check_erase_testset()
209 erase_check_load(mt, i); in check_erase_testset()
211 erase_check_erase(mt, 16); /*7002 */ in check_erase_testset()
214 check_load(mt, set[i], NULL); in check_erase_testset()
216 erase_check_load(mt, i); in check_erase_testset()
221 erase_check_erase(mt, 13); /*6012 */ in check_erase_testset()
224 check_load(mt, set[i], NULL); in check_erase_testset()
226 erase_check_load(mt, i); in check_erase_testset()
229 erase_check_erase(mt, 15); /*7003 */ in check_erase_testset()
232 check_load(mt, set[i], NULL); in check_erase_testset()
234 erase_check_load(mt, i); in check_erase_testset()
238 erase_check_erase(mt, 17); /*7008 *should* cause coalesce. */ in check_erase_testset()
241 check_load(mt, set[i], NULL); in check_erase_testset()
243 erase_check_load(mt, i); in check_erase_testset()
246 erase_check_erase(mt, 18); /*7012 */ in check_erase_testset()
249 check_load(mt, set[i], NULL); in check_erase_testset()
251 erase_check_load(mt, i); in check_erase_testset()
255 erase_check_erase(mt, 19); /*7015 */ in check_erase_testset()
258 check_load(mt, set[i], NULL); in check_erase_testset()
260 erase_check_load(mt, i); in check_erase_testset()
263 erase_check_erase(mt, 20); /*8003 */ in check_erase_testset()
266 check_load(mt, set[i], NULL); in check_erase_testset()
268 erase_check_load(mt, i); in check_erase_testset()
271 erase_check_erase(mt, 21); /*8002 */ in check_erase_testset()
274 check_load(mt, set[i], NULL); in check_erase_testset()
276 erase_check_load(mt, i); in check_erase_testset()
280 erase_check_erase(mt, 22); /*8008 */ in check_erase_testset()
283 check_load(mt, set[i], NULL); in check_erase_testset()
285 erase_check_load(mt, i); in check_erase_testset()
288 erase_check_erase(mt, i); in check_erase_testset()
292 check_load(mt, set[i], NULL); in check_erase_testset()
294 erase_check_load(mt, i); in check_erase_testset()
300 erase_check_insert(mt, i); in check_erase_testset()
304 erase_check_erase(mt, i); in check_erase_testset()
307 erase_check_load(mt, j); in check_erase_testset()
309 check_load(mt, set[j], NULL); in check_erase_testset()
314 erase_check_erase(mt, i); in check_erase_testset()
317 erase_check_load(mt, j); in check_erase_testset()
319 check_load(mt, set[j], NULL); in check_erase_testset()
322 erase_check_insert(mt, 8); in check_erase_testset()
323 erase_check_insert(mt, 9); in check_erase_testset()
324 erase_check_erase(mt, 8); in check_erase_testset()
331 #define erase_check_store_range(mt, a, i, ptr) mtree_test_store_range(mt, \ argument
581 static noinline void __init check_erase2_testset(struct maple_tree *mt, in check_erase2_testset() argument
590 MA_STATE(mas, mt, 0, 0); in check_erase2_testset()
597 MA_STATE(mas_start, mt, set[i+1], set[i+1]); in check_erase2_testset()
598 MA_STATE(mas_end, mt, set[i+2], set[i+2]); in check_erase2_testset()
625 erase_check_store_range(mt, set, i + 1, value); in check_erase2_testset()
653 erase_check_store_range(mt, set, i + 1, value); in check_erase2_testset()
658 check_erase(mt, set[i+1], xa_mk_value(set[i+1])); in check_erase2_testset()
662 mt_validate(mt); in check_erase2_testset()
664 MT_BUG_ON(mt, !mt_height(mt)); in check_erase2_testset()
666 mt_dump(mt, mt_dump_hex); in check_erase2_testset()
674 mt_for_each(mt, foo, addr, ULONG_MAX) { in check_erase2_testset()
687 MT_BUG_ON(mt, check != entry_count); in check_erase2_testset()
700 MT_BUG_ON(mt, 1); in check_erase2_testset()
715 mt_validate(mt); in check_erase2_testset()
718 MT_BUG_ON(mt, check != entry_count); in check_erase2_testset()
720 MT_BUG_ON(mt, mtree_load(mas.tree, 0) != NULL); in check_erase2_testset()
726 static noinline void __init check_erase2_sets(struct maple_tree *mt) in check_erase2_sets() argument
33498 MA_STATE(mas, mt, 0, 0); in check_erase2_sets()
33501 check_erase2_testset(mt, set, ARRAY_SIZE(set)); in check_erase2_sets()
33503 mtree_destroy(mt); in check_erase2_sets()
33505 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33506 check_erase2_testset(mt, set2, ARRAY_SIZE(set2)); in check_erase2_sets()
33508 MT_BUG_ON(mt, !!mt_find(mt, &start, 140735933906943UL)); in check_erase2_sets()
33509 mtree_destroy(mt); in check_erase2_sets()
33512 mt_init_flags(mt, 0); in check_erase2_sets()
33513 check_erase2_testset(mt, set3, ARRAY_SIZE(set3)); in check_erase2_sets()
33515 mtree_destroy(mt); in check_erase2_sets()
33517 mt_init_flags(mt, 0); in check_erase2_sets()
33518 check_erase2_testset(mt, set4, ARRAY_SIZE(set4)); in check_erase2_sets()
33526 mtree_destroy(mt); in check_erase2_sets()
33528 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33530 check_erase2_testset(mt, set5, ARRAY_SIZE(set5)); in check_erase2_sets()
33533 mtree_destroy(mt); in check_erase2_sets()
33535 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33536 check_erase2_testset(mt, set6, ARRAY_SIZE(set6)); in check_erase2_sets()
33538 mtree_destroy(mt); in check_erase2_sets()
33540 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33541 check_erase2_testset(mt, set7, ARRAY_SIZE(set7)); in check_erase2_sets()
33543 mtree_destroy(mt); in check_erase2_sets()
33545 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33546 check_erase2_testset(mt, set8, ARRAY_SIZE(set8)); in check_erase2_sets()
33548 mtree_destroy(mt); in check_erase2_sets()
33550 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33551 check_erase2_testset(mt, set9, ARRAY_SIZE(set9)); in check_erase2_sets()
33553 mtree_destroy(mt); in check_erase2_sets()
33555 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33556 check_erase2_testset(mt, set10, ARRAY_SIZE(set10)); in check_erase2_sets()
33558 mtree_destroy(mt); in check_erase2_sets()
33561 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33562 check_erase2_testset(mt, set11, ARRAY_SIZE(set11)); in check_erase2_sets()
33565 MT_BUG_ON(mt, mas.last != 140014592573439); in check_erase2_sets()
33566 mtree_destroy(mt); in check_erase2_sets()
33569 mas.tree = mt; in check_erase2_sets()
33572 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33573 check_erase2_testset(mt, set12, ARRAY_SIZE(set12)); in check_erase2_sets()
33581 mtree_destroy(mt); in check_erase2_sets()
33584 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33585 check_erase2_testset(mt, set13, ARRAY_SIZE(set13)); in check_erase2_sets()
33586 mtree_erase(mt, 140373516443648); in check_erase2_sets()
33590 mtree_destroy(mt); in check_erase2_sets()
33591 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33592 check_erase2_testset(mt, set14, ARRAY_SIZE(set14)); in check_erase2_sets()
33594 mtree_destroy(mt); in check_erase2_sets()
33596 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33597 check_erase2_testset(mt, set15, ARRAY_SIZE(set15)); in check_erase2_sets()
33599 mtree_destroy(mt); in check_erase2_sets()
33604 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33605 check_erase2_testset(mt, set16, ARRAY_SIZE(set16)); in check_erase2_sets()
33608 MT_BUG_ON(mt, mas.last != 139921865547775); in check_erase2_sets()
33610 mtree_destroy(mt); in check_erase2_sets()
33619 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33620 check_erase2_testset(mt, set17, ARRAY_SIZE(set17)); in check_erase2_sets()
33623 MT_BUG_ON(mt, mas.last != 139953197322239); in check_erase2_sets()
33626 mtree_destroy(mt); in check_erase2_sets()
33635 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33636 check_erase2_testset(mt, set18, ARRAY_SIZE(set18)); in check_erase2_sets()
33639 MT_BUG_ON(mt, mas.last != 140222968475647); in check_erase2_sets()
33642 mtree_destroy(mt); in check_erase2_sets()
33653 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33654 check_erase2_testset(mt, set19, ARRAY_SIZE(set19)); in check_erase2_sets()
33658 MT_BUG_ON(mt, entry != xa_mk_value(140656779083776)); in check_erase2_sets()
33660 MT_BUG_ON(mt, entry != xa_mk_value(140656766251008)); in check_erase2_sets()
33662 mtree_destroy(mt); in check_erase2_sets()
33669 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33670 check_erase2_testset(mt, set20, ARRAY_SIZE(set20)); in check_erase2_sets()
33672 check_load(mt, 94849009414144, NULL); in check_erase2_sets()
33674 mtree_destroy(mt); in check_erase2_sets()
33677 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33678 check_erase2_testset(mt, set21, ARRAY_SIZE(set21)); in check_erase2_sets()
33680 mt_validate(mt); in check_erase2_sets()
33682 mtree_destroy(mt); in check_erase2_sets()
33685 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33686 check_erase2_testset(mt, set22, ARRAY_SIZE(set22)); in check_erase2_sets()
33688 mt_validate(mt); in check_erase2_sets()
33689 ptr = mtree_load(mt, 140551363362816); in check_erase2_sets()
33690 MT_BUG_ON(mt, ptr == mtree_load(mt, 140551363420159)); in check_erase2_sets()
33692 mtree_destroy(mt); in check_erase2_sets()
33695 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33696 check_erase2_testset(mt, set23, ARRAY_SIZE(set23)); in check_erase2_sets()
33699 mt_validate(mt); in check_erase2_sets()
33700 mtree_destroy(mt); in check_erase2_sets()
33704 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33705 check_erase2_testset(mt, set24, ARRAY_SIZE(set24)); in check_erase2_sets()
33708 mt_validate(mt); in check_erase2_sets()
33709 mtree_destroy(mt); in check_erase2_sets()
33712 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33713 check_erase2_testset(mt, set25, ARRAY_SIZE(set25)); in check_erase2_sets()
33716 mt_validate(mt); in check_erase2_sets()
33717 mtree_destroy(mt); in check_erase2_sets()
33722 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33723 check_erase2_testset(mt, set26, ARRAY_SIZE(set26)); in check_erase2_sets()
33726 MT_BUG_ON(mt, mas.last != 140109040959487); in check_erase2_sets()
33728 mt_validate(mt); in check_erase2_sets()
33729 mtree_destroy(mt); in check_erase2_sets()
33734 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33735 check_erase2_testset(mt, set27, ARRAY_SIZE(set27)); in check_erase2_sets()
33737 MT_BUG_ON(mt, NULL != mtree_load(mt, 140415537422336)); in check_erase2_sets()
33739 mt_validate(mt); in check_erase2_sets()
33740 mtree_destroy(mt); in check_erase2_sets()
33744 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33745 check_erase2_testset(mt, set28, ARRAY_SIZE(set28)); in check_erase2_sets()
33750 MT_BUG_ON(mt, mas.index != 139918401601536); in check_erase2_sets()
33752 mt_validate(mt); in check_erase2_sets()
33753 mtree_destroy(mt); in check_erase2_sets()
33760 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33761 check_erase2_testset(mt, set29, ARRAY_SIZE(set29)); in check_erase2_sets()
33764 mt_validate(mt); in check_erase2_sets()
33765 mtree_destroy(mt); in check_erase2_sets()
33773 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33774 check_erase2_testset(mt, set30, ARRAY_SIZE(set30)); in check_erase2_sets()
33777 mt_validate(mt); in check_erase2_sets()
33778 mtree_destroy(mt); in check_erase2_sets()
33786 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33787 check_erase2_testset(mt, set31, ARRAY_SIZE(set31)); in check_erase2_sets()
33790 mt_validate(mt); in check_erase2_sets()
33791 mtree_destroy(mt); in check_erase2_sets()
33795 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33796 check_erase2_testset(mt, set32, ARRAY_SIZE(set32)); in check_erase2_sets()
33799 mt_validate(mt); in check_erase2_sets()
33800 mtree_destroy(mt); in check_erase2_sets()
33815 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33816 check_erase2_testset(mt, set33, ARRAY_SIZE(set33)); in check_erase2_sets()
33819 MT_BUG_ON(mt, mas.last != 140583003750399); in check_erase2_sets()
33821 mt_validate(mt); in check_erase2_sets()
33822 mtree_destroy(mt); in check_erase2_sets()
33830 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33831 check_erase2_testset(mt, set34, ARRAY_SIZE(set34)); in check_erase2_sets()
33834 mt_validate(mt); in check_erase2_sets()
33835 mtree_destroy(mt); in check_erase2_sets()
33840 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33841 check_erase2_testset(mt, set35, ARRAY_SIZE(set35)); in check_erase2_sets()
33844 mt_validate(mt); in check_erase2_sets()
33845 mtree_destroy(mt); in check_erase2_sets()
33850 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33851 check_erase2_testset(mt, set36, ARRAY_SIZE(set36)); in check_erase2_sets()
33854 mt_validate(mt); in check_erase2_sets()
33855 mtree_destroy(mt); in check_erase2_sets()
33858 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33859 check_erase2_testset(mt, set37, ARRAY_SIZE(set37)); in check_erase2_sets()
33861 MT_BUG_ON(mt, NULL != mtree_load(mt, 94637033459712)); in check_erase2_sets()
33862 mt_validate(mt); in check_erase2_sets()
33863 mtree_destroy(mt); in check_erase2_sets()
33866 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33867 check_erase2_testset(mt, set38, ARRAY_SIZE(set38)); in check_erase2_sets()
33869 MT_BUG_ON(mt, NULL != mtree_load(mt, 94637033459712)); in check_erase2_sets()
33870 mt_validate(mt); in check_erase2_sets()
33871 mtree_destroy(mt); in check_erase2_sets()
33874 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33875 check_erase2_testset(mt, set39, ARRAY_SIZE(set39)); in check_erase2_sets()
33877 mt_validate(mt); in check_erase2_sets()
33878 mtree_destroy(mt); in check_erase2_sets()
33881 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33882 check_erase2_testset(mt, set40, ARRAY_SIZE(set40)); in check_erase2_sets()
33884 mt_validate(mt); in check_erase2_sets()
33885 mtree_destroy(mt); in check_erase2_sets()
33888 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33889 check_erase2_testset(mt, set41, ARRAY_SIZE(set41)); in check_erase2_sets()
33891 mt_validate(mt); in check_erase2_sets()
33892 mtree_destroy(mt); in check_erase2_sets()
33897 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33898 check_erase2_testset(mt, set42, ARRAY_SIZE(set42)); in check_erase2_sets()
33901 MT_BUG_ON(mt, mas.last != 4041211903); in check_erase2_sets()
33903 mt_validate(mt); in check_erase2_sets()
33904 mtree_destroy(mt); in check_erase2_sets()
33909 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_erase2_sets()
33910 check_erase2_testset(mt, set43, ARRAY_SIZE(set43)); in check_erase2_sets()
33913 mt_validate(mt); in check_erase2_sets()
33914 mtree_destroy(mt); in check_erase2_sets()
33953 MA_STATE(mas, test->mt, 0, 0); in rcu_reader_fwd()
34083 MA_STATE(mas, test->mt, 0, 0); in rcu_reader_rev()
34150 mt_dump(test->mt, mt_dump_dec); in rcu_reader_rev()
34213 static void rcu_stress_rev(struct maple_tree *mt, struct rcu_test_struct2 *test, in rcu_stress_rev() argument
34233 mtree_store_range(mt, start, end, in rcu_stress_rev()
34243 mtree_store_range(mt, start, end, in rcu_stress_rev()
34254 mtree_store_range(mt, start, end, NULL, GFP_KERNEL); in rcu_stress_rev()
34261 mtree_store_range(mt, start, end, in rcu_stress_rev()
34272 static void rcu_stress_fwd(struct maple_tree *mt, struct rcu_test_struct2 *test, in rcu_stress_fwd() argument
34290 mtree_store_range(mt, start, end, in rcu_stress_fwd()
34300 mtree_store_range(mt, start, end, in rcu_stress_fwd()
34311 mtree_store_range(mt, start, end, NULL, GFP_KERNEL); in rcu_stress_fwd()
34318 mtree_store_range(mt, start, end, in rcu_stress_fwd()
34340 static void rcu_stress(struct maple_tree *mt, bool forward) in rcu_stress() argument
34350 test.mt = mt; in rcu_stress()
34363 mtree_store_range(mt, seed, r, in rcu_stress()
34395 mtree_store_range(mt, test.index[add], test.last[add], in rcu_stress()
34399 mt_set_in_rcu(mt); in rcu_stress()
34405 rcu_stress_fwd(mt, &test, count, test_reader); in rcu_stress()
34407 rcu_stress_rev(mt, &test, count, test_reader); in rcu_stress()
34413 mt_validate(mt); in rcu_stress()
34418 struct maple_tree *mt; /* the maple tree */ member
34498 entry = mtree_load(test->mt, test->index); in rcu_val()
34499 MT_BUG_ON(test->mt, eval_rcu_entry(test, entry, &update_2, in rcu_val()
34519 MA_STATE(mas, test->mt, test->range_start, test->range_start); in rcu_loop()
34542 MT_BUG_ON(test->mt, entry != expected); in rcu_loop()
34550 MT_BUG_ON(test->mt, eval_rcu_entry(test, entry, in rcu_loop()
34563 void run_check_rcu(struct maple_tree *mt, struct rcu_test_struct *vals) in run_check_rcu() argument
34570 mt_set_in_rcu(mt); in run_check_rcu()
34571 MT_BUG_ON(mt, !mt_in_rcu(mt)); in run_check_rcu()
34586 mtree_store_range(mt, vals->index, vals->last, vals->entry2, in run_check_rcu()
34592 MT_BUG_ON(mt, !vals->seen_entry2); in run_check_rcu()
34598 MA_STATE(mas, test->mt, test->index, test->index); in rcu_slot_store_reader()
34615 static noinline void run_check_rcu_slot_store(struct maple_tree *mt) in run_check_rcu_slot_store() argument
34620 struct rcu_test_struct3 test = {.stop = false, .mt = mt}; in run_check_rcu_slot_store()
34628 mtree_store_range(mt, i * len, i * len + len - 1, in run_check_rcu_slot_store()
34632 mt_set_in_rcu(mt); in run_check_rcu_slot_store()
34633 MT_BUG_ON(mt, !mt_in_rcu(mt)); in run_check_rcu_slot_store()
34647 mtree_store_range(mt, --start, ++end, xa_mk_value(100), in run_check_rcu_slot_store()
34656 mt_validate(mt); in run_check_rcu_slot_store()
34660 void run_check_rcu_slowread(struct maple_tree *mt, struct rcu_test_struct *vals) in run_check_rcu_slowread() argument
34668 mt_set_in_rcu(mt); in run_check_rcu_slowread()
34669 MT_BUG_ON(mt, !mt_in_rcu(mt)); in run_check_rcu_slowread()
34686 mtree_store(mt, index, in run_check_rcu_slowread()
34697 MT_BUG_ON(mt, !vals->seen_entry2); in run_check_rcu_slowread()
34698 MT_BUG_ON(mt, !vals->seen_entry3); in run_check_rcu_slowread()
34699 MT_BUG_ON(mt, !vals->seen_both); in run_check_rcu_slowread()
34702 static noinline void __init check_rcu_simulated(struct maple_tree *mt) in check_rcu_simulated() argument
34708 MA_STATE(mas_writer, mt, 0, 0); in check_rcu_simulated()
34709 MA_STATE(mas_reader, mt, target, target); in check_rcu_simulated()
34713 mt_set_in_rcu(mt); in check_rcu_simulated()
34725 MT_BUG_ON(mt, mas_walk(&mas_reader) != xa_mk_value(target/10)); in check_rcu_simulated()
34729 MT_BUG_ON(mt, mas_walk(&mas_reader) != xa_mk_value(val)); in check_rcu_simulated()
34742 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(val)); in check_rcu_simulated()
34759 MT_BUG_ON(mt, mas_walk(&mas_reader) != xa_mk_value(target/10)); in check_rcu_simulated()
34763 MT_BUG_ON(mt, mas_walk(&mas_reader) != xa_mk_value(target/10)); in check_rcu_simulated()
34776 MT_BUG_ON(mt, mas_walk(&mas_reader) != xa_mk_value(target/10)); in check_rcu_simulated()
34780 MT_BUG_ON(mt, mas_walk(&mas_reader) != xa_mk_value(val)); in check_rcu_simulated()
34792 MT_BUG_ON(mt, mas_walk(&mas_reader) != xa_mk_value(target/10)); in check_rcu_simulated()
34796 MT_BUG_ON(mt, mas_walk(&mas_reader) != xa_mk_value(val)); in check_rcu_simulated()
34808 MT_BUG_ON(mt, mas_walk(&mas_reader) != xa_mk_value(target/10)); in check_rcu_simulated()
34812 MT_BUG_ON(mt, mas_walk(&mas_reader) != xa_mk_value(val)); in check_rcu_simulated()
34833 MT_BUG_ON(mt, mas_walk(&mas_reader) != xa_mk_value(target/10)); in check_rcu_simulated()
34838 MT_BUG_ON(mt, mas_next(&mas_reader, ULONG_MAX) != xa_mk_value(val)); in check_rcu_simulated()
34852 MT_BUG_ON(mt, mas_walk(&mas_reader) != xa_mk_value(target/10)); in check_rcu_simulated()
34857 MT_BUG_ON(mt, mas_prev(&mas_reader, 0) != xa_mk_value(val)); in check_rcu_simulated()
34863 static noinline void __init check_rcu_threaded(struct maple_tree *mt) in check_rcu_threaded() argument
34873 mtree_store_range(mt, i*10, i*10 + 5, in check_rcu_threaded()
34877 vals.mt = mt; in check_rcu_threaded()
34889 run_check_rcu(mt, &vals); in check_rcu_threaded()
34890 mtree_destroy(mt); in check_rcu_threaded()
34892 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_rcu_threaded()
34894 mtree_store_range(mt, i*10, i*10 + 5, in check_rcu_threaded()
34901 vals.mt = mt; in check_rcu_threaded()
34910 run_check_rcu(mt, &vals); in check_rcu_threaded()
34911 mtree_destroy(mt); in check_rcu_threaded()
34914 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_rcu_threaded()
34915 run_check_rcu_slot_store(mt); in check_rcu_threaded()
34916 mtree_destroy(mt); in check_rcu_threaded()
34919 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_rcu_threaded()
34920 rcu_stress(mt, true); in check_rcu_threaded()
34921 mtree_destroy(mt); in check_rcu_threaded()
34924 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_rcu_threaded()
34925 rcu_stress(mt, false); in check_rcu_threaded()
34926 mtree_destroy(mt); in check_rcu_threaded()
34929 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_rcu_threaded()
34931 mtree_store_range(mt, i*10, i*10 + 5, in check_rcu_threaded()
34938 vals.mt = mt; in check_rcu_threaded()
34959 run_check_rcu_slowread(mt, &vals); in check_rcu_threaded()
35013 static void check_dfs_preorder(struct maple_tree *mt) in check_dfs_preorder() argument
35017 MA_STATE(mas, mt, 0, 0); in check_dfs_preorder()
35024 check_seq(mt, max, false); in check_dfs_preorder()
35029 MT_BUG_ON(mt, count != e); in check_dfs_preorder()
35030 mtree_destroy(mt); in check_dfs_preorder()
35032 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_dfs_preorder()
35038 check_seq(mt, max, false); in check_dfs_preorder()
35044 MT_BUG_ON(mt, count != e); in check_dfs_preorder()
35045 mtree_destroy(mt); in check_dfs_preorder()
35047 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_dfs_preorder()
35050 check_rev_seq(mt, max, false); in check_dfs_preorder()
35056 MT_BUG_ON(mt, count != e); in check_dfs_preorder()
35057 mtree_destroy(mt); in check_dfs_preorder()
35130 static noinline void __init check_prealloc(struct maple_tree *mt) in check_prealloc() argument
35138 MA_STATE(mas, mt, 10, 20); in check_prealloc()
35143 mtree_test_store_range(mt, i * 10, i * 10 + 5, &i); in check_prealloc()
35149 MT_BUG_ON(mt, mas.store_type != wr_spanning_store); in check_prealloc()
35150 MT_BUG_ON(mt, mas_is_err(&mas)); in check_prealloc()
35154 MT_BUG_ON(mt, allocated == 0); in check_prealloc()
35155 MT_BUG_ON(mt, allocated != 1 + (height - vacant_height) * 3); in check_prealloc()
35158 MT_BUG_ON(mt, allocated != 0); in check_prealloc()
35161 MT_BUG_ON(mt, mas_preallocate(&mas, ptr, GFP_KERNEL) != 0); in check_prealloc()
35165 MT_BUG_ON(mt, allocated == 0); in check_prealloc()
35166 MT_BUG_ON(mt, allocated != 1 + (height - vacant_height) * 3); in check_prealloc()
35167 MT_BUG_ON(mt, mas_preallocate(&mas, ptr, GFP_KERNEL) != 0); in check_prealloc()
35170 MT_BUG_ON(mt, allocated != 0); in check_prealloc()
35173 MT_BUG_ON(mt, mas_preallocate(&mas, ptr, GFP_KERNEL) != 0); in check_prealloc()
35177 MT_BUG_ON(mt, allocated != 1 + (height - vacant_height) * 3); in check_prealloc()
35179 MT_BUG_ON(mt, mas_allocated(&mas) != allocated - 1); in check_prealloc()
35182 MT_BUG_ON(mt, mas_preallocate(&mas, ptr, GFP_KERNEL) != 0); in check_prealloc()
35185 MT_BUG_ON(mt, allocated != 0); in check_prealloc()
35187 MT_BUG_ON(mt, mas_preallocate(&mas, ptr, GFP_KERNEL) != 0); in check_prealloc()
35191 MT_BUG_ON(mt, allocated != 1 + (height - vacant_height) * 3); in check_prealloc()
35193 MT_BUG_ON(mt, mas_allocated(&mas) != allocated - 1); in check_prealloc()
35194 MT_BUG_ON(mt, mas_preallocate(&mas, ptr, GFP_KERNEL) != 0); in check_prealloc()
35197 MT_BUG_ON(mt, allocated != 0); in check_prealloc()
35201 MT_BUG_ON(mt, mas_preallocate(&mas, ptr, GFP_KERNEL) != 0); in check_prealloc()
35205 MT_BUG_ON(mt, allocated != 1 + (height - vacant_height) * 3); in check_prealloc()
35207 MT_BUG_ON(mt, mas_allocated(&mas) != 0); in check_prealloc()
35211 MT_BUG_ON(mt, mas_preallocate(&mas, ptr, GFP_KERNEL) != 0); in check_prealloc()
35213 MT_BUG_ON(mt, allocated != 0); in check_prealloc()
35215 MT_BUG_ON(mt, mas_allocated(&mas) != 0); in check_prealloc()
35218 MT_BUG_ON(mt, mas_preallocate(&mas, ptr, GFP_KERNEL) != 0); in check_prealloc()
35221 MT_BUG_ON(mt, allocated != 0); in check_prealloc()
35223 MT_BUG_ON(mt, mas_allocated(&mas) != 0); in check_prealloc()
35227 MT_BUG_ON(mt, mas_preallocate(&mas, ptr, GFP_KERNEL) != 0); in check_prealloc()
35231 MT_BUG_ON(mt, allocated != 1 + (height - vacant_height) * 2); in check_prealloc()
35233 MT_BUG_ON(mt, mas_allocated(&mas) != 0); in check_prealloc()
35237 MT_BUG_ON(mt, mas_preallocate(&mas, ptr, GFP_NOWAIT) == 0); in check_prealloc()
35240 MT_BUG_ON(mt, allocated != 0); in check_prealloc()
35245 MT_BUG_ON(mt, mas_preallocate(&mas, ptr, GFP_KERNEL) != 0); in check_prealloc()
35249 MT_BUG_ON(mt, allocated == 0); in check_prealloc()
35255 MT_BUG_ON(mt, allocated != height * 3 + 1); in check_prealloc()
35257 MT_BUG_ON(mt, mas_allocated(&mas) != 0); in check_prealloc()
35260 MT_BUG_ON(mt, mas_preallocate(&mas, ptr, GFP_NOWAIT) == 0); in check_prealloc()
35263 MT_BUG_ON(mt, allocated != 0); in check_prealloc()
35266 mt_set_in_rcu(mt); in check_prealloc()
35268 MT_BUG_ON(mt, mas_preallocate(&mas, ptr, GFP_KERNEL) != 0); in check_prealloc()
35270 MT_BUG_ON(mt, allocated != 0); in check_prealloc()
35272 MT_BUG_ON(mt, mas_preallocate(&mas, ptr, GFP_KERNEL) != 0); in check_prealloc()
35274 MT_BUG_ON(mt, allocated != 1); in check_prealloc()
35280 static noinline void __init check_spanning_write(struct maple_tree *mt) in check_spanning_write() argument
35283 MA_STATE(mas, mt, 1200, 2380); in check_spanning_write()
35288 mtree_test_store_range(mt, i * 10, i * 10 + 5, &i); in check_spanning_write()
35290 mtree_lock(mt); in check_spanning_write()
35293 MT_BUG_ON(mt, mas_walk(&mas) != NULL); in check_spanning_write()
35294 mtree_unlock(mt); in check_spanning_write()
35295 mtree_destroy(mt); in check_spanning_write()
35298 mtree_test_store_range(mt, i * 10, i * 10 + 5, &i); in check_spanning_write()
35300 mtree_lock(mt); in check_spanning_write()
35304 MT_BUG_ON(mt, mas_walk(&mas) != NULL); in check_spanning_write()
35305 mtree_unlock(mt); in check_spanning_write()
35306 mt_validate(mt); in check_spanning_write()
35307 mtree_destroy(mt); in check_spanning_write()
35310 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_spanning_write()
35312 mtree_test_store_range(mt, i * 10, i * 10 + 5, &i); in check_spanning_write()
35315 mtree_lock(mt); in check_spanning_write()
35318 MT_BUG_ON(mt, mas_walk(&mas) != NULL); in check_spanning_write()
35319 mtree_unlock(mt); in check_spanning_write()
35320 mtree_destroy(mt); in check_spanning_write()
35323 mt_init_flags(mt, 0); in check_spanning_write()
35325 mtree_test_store_range(mt, i * 10, i * 10 + 5, &i); in check_spanning_write()
35328 mtree_lock(mt); in check_spanning_write()
35331 MT_BUG_ON(mt, mas_walk(&mas) != NULL); in check_spanning_write()
35332 mtree_unlock(mt); in check_spanning_write()
35333 mtree_destroy(mt); in check_spanning_write()
35336 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_spanning_write()
35338 mtree_test_store_range(mt, i * 10, i * 10 + 5, &i); in check_spanning_write()
35341 mtree_lock(mt); in check_spanning_write()
35344 MT_BUG_ON(mt, mas_walk(&mas) != NULL); in check_spanning_write()
35345 mtree_unlock(mt); in check_spanning_write()
35346 mtree_destroy(mt); in check_spanning_write()
35349 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_spanning_write()
35351 mtree_test_store_range(mt, i * 10, i * 10 + 5, &i); in check_spanning_write()
35354 mtree_lock(mt); in check_spanning_write()
35357 MT_BUG_ON(mt, mas_walk(&mas) != NULL); in check_spanning_write()
35358 mtree_unlock(mt); in check_spanning_write()
35359 mtree_destroy(mt); in check_spanning_write()
35362 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_spanning_write()
35364 mtree_test_store_range(mt, i * 10, i * 10 + 5, &i); in check_spanning_write()
35367 mtree_lock(mt); in check_spanning_write()
35370 MT_BUG_ON(mt, mas_walk(&mas) != NULL); in check_spanning_write()
35371 mtree_unlock(mt); in check_spanning_write()
35372 mtree_destroy(mt); in check_spanning_write()
35378 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_spanning_write()
35380 mtree_test_store_range(mt, i * 10, i * 10 + 5, &i); in check_spanning_write()
35383 mtree_lock(mt); in check_spanning_write()
35386 MT_BUG_ON(mt, mas_walk(&mas) != NULL); in check_spanning_write()
35387 mtree_unlock(mt); in check_spanning_write()
35388 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()
35406 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_spanning_write()
35408 mtree_test_store_range(mt, i * 10, i * 10 + 5, &i); in check_spanning_write()
35410 mtree_lock(mt); in check_spanning_write()
35431 MT_BUG_ON(mt, (mas_data_end(&mas)) != mt_slot_count(mas.node) - 1); in check_spanning_write()
35434 mtree_unlock(mt); in check_spanning_write()
35435 mtree_destroy(mt); in check_spanning_write()
35438 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_spanning_write()
35440 mtree_test_store_range(mt, i * 10, i * 10 + 5, &i); in check_spanning_write()
35442 mtree_lock(mt); in check_spanning_write()
35445 MT_BUG_ON(mt, mas_walk(&mas) != NULL); in check_spanning_write()
35446 mtree_unlock(mt); in check_spanning_write()
35447 mtree_destroy(mt); in check_spanning_write()
35449 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_spanning_write()
35451 mtree_test_store_range(mt, i * 10, i * 10 + 5, &i); in check_spanning_write()
35453 mtree_lock(mt); in check_spanning_write()
35456 mtree_unlock(mt); in check_spanning_write()
35457 mtree_destroy(mt); in check_spanning_write()
35459 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_spanning_write()
35461 mtree_test_store_range(mt, i * 10, i * 10 + 5, &i); in check_spanning_write()
35468 mtree_lock(mt); in check_spanning_write()
35471 MT_BUG_ON(mt, mas_walk(&mas) == NULL); in check_spanning_write()
35472 MT_BUG_ON(mt, mas.end != mas.offset); in check_spanning_write()
35473 MT_BUG_ON(mt, mas_next_range(&mas, ULONG_MAX) != NULL); in check_spanning_write()
35476 mt_validate(mt); in check_spanning_write()
35480 MT_BUG_ON(mt, mas_walk(&mas) != NULL); in check_spanning_write()
35481 MT_BUG_ON(mt, mas.index != 49846); in check_spanning_write()
35483 MT_BUG_ON(mt, mas_walk(&mas) != NULL); in check_spanning_write()
35484 MT_BUG_ON(mt, mas.last != 49879); in check_spanning_write()
35488 MT_BUG_ON(mt, mas.index != 49846); in check_spanning_write()
35489 MT_BUG_ON(mt, mas.last != 49879); in check_spanning_write()
35490 mt_validate(mt); in check_spanning_write()
35494 MT_BUG_ON(mt, mas_walk(&mas) == NULL); in check_spanning_write()
35495 MT_BUG_ON(mt, mas.index != 49800); in check_spanning_write()
35497 MT_BUG_ON(mt, mas_walk(&mas) == NULL); in check_spanning_write()
35498 MT_BUG_ON(mt, mas.last != 49815); in check_spanning_write()
35502 MT_BUG_ON(mt, mas.index != 49796); in check_spanning_write()
35503 MT_BUG_ON(mt, mas.last != 49819); in check_spanning_write()
35504 mt_validate(mt); in check_spanning_write()
35508 MT_BUG_ON(mt, mas_walk(&mas) != NULL); in check_spanning_write()
35509 MT_BUG_ON(mt, mas.index != 49906); in check_spanning_write()
35511 MT_BUG_ON(mt, mas_walk(&mas) != NULL); in check_spanning_write()
35512 MT_BUG_ON(mt, mas.last != 49929); in check_spanning_write()
35515 MT_BUG_ON(mt, mas.index != 49907); in check_spanning_write()
35516 MT_BUG_ON(mt, mas.last != 49928); in check_spanning_write()
35517 mt_validate(mt); in check_spanning_write()
35527 MT_BUG_ON(mt, mas_walk(&mas) == NULL); in check_spanning_write()
35528 MT_BUG_ON(mt, mas.index != i); in check_spanning_write()
35529 MT_BUG_ON(mt, mas.end != mt_slot_count(mas.node) - 1); in check_spanning_write()
35531 MT_BUG_ON(mt, mas_next_range(&mas, ULONG_MAX) != NULL); in check_spanning_write()
35532 MT_BUG_ON(mt, mas.index != i + 6); in check_spanning_write()
35533 MT_BUG_ON(mt, mas.end != mt_slot_count(mas.node) - 1); in check_spanning_write()
35534 MT_BUG_ON(mt, enode == mas.node); in check_spanning_write()
35537 MT_BUG_ON(mt, mas.index != i + 2); in check_spanning_write()
35538 MT_BUG_ON(mt, mas.last != i + 7); in check_spanning_write()
35539 mt_validate(mt); in check_spanning_write()
35562 MT_BUG_ON(mt, mas_walk(&mas) == NULL); in check_spanning_write()
35563 MT_BUG_ON(mt, mas.index != i); in check_spanning_write()
35564 MT_BUG_ON(mt, mas.end != mt_slot_count(mas.node) - 1); in check_spanning_write()
35567 MT_BUG_ON(mt, mas_next_range(&mas, ULONG_MAX) != NULL); in check_spanning_write()
35568 MT_BUG_ON(mt, mas.index != i + 6); in check_spanning_write()
35569 MT_BUG_ON(mt, mas.end != mt_slot_count(mas.node) - 1); in check_spanning_write()
35570 MT_BUG_ON(mt, enode == mas.node); in check_spanning_write()
35571 MT_BUG_ON(mt, pnode == mte_parent(mas.node)); in check_spanning_write()
35574 mt_validate(mt); in check_spanning_write()
35576 mtree_unlock(mt); in check_spanning_write()
35577 mtree_destroy(mt); in check_spanning_write()
35583 static noinline void __init check_null_expand(struct maple_tree *mt) in check_null_expand() argument
35587 MA_STATE(mas, mt, 959, 959); in check_null_expand()
35590 mtree_test_store_range(mt, i * 10, i * 10 + 5, &i); in check_null_expand()
35597 MT_BUG_ON(mt, mtree_load(mt, 963) != NULL); in check_null_expand()
35598 MT_BUG_ON(mt, data_end != mas_data_end(&mas)); in check_null_expand()
35606 MT_BUG_ON(mt, mtree_load(mt, 884) != NULL); in check_null_expand()
35607 MT_BUG_ON(mt, mtree_load(mt, 889) != NULL); in check_null_expand()
35609 MT_BUG_ON(mt, data_end != mas_data_end(&mas)); in check_null_expand()
35618 MT_BUG_ON(mt, mtree_load(mt, 899) != NULL); in check_null_expand()
35619 MT_BUG_ON(mt, mtree_load(mt, 900) != NULL); in check_null_expand()
35620 MT_BUG_ON(mt, mtree_load(mt, 905) != NULL); in check_null_expand()
35621 MT_BUG_ON(mt, mtree_load(mt, 906) != NULL); in check_null_expand()
35623 MT_BUG_ON(mt, data_end - 2 != mas_data_end(&mas)); in check_null_expand()
35632 MT_BUG_ON(mt, mtree_load(mt, 809) != NULL); in check_null_expand()
35633 MT_BUG_ON(mt, mtree_load(mt, 810) != NULL); in check_null_expand()
35634 MT_BUG_ON(mt, mtree_load(mt, 825) != NULL); in check_null_expand()
35635 MT_BUG_ON(mt, mtree_load(mt, 826) != NULL); in check_null_expand()
35637 MT_BUG_ON(mt, data_end - 4 != mas_data_end(&mas)); in check_null_expand()
35644 static noinline void __init check_nomem(struct maple_tree *mt) in check_nomem() argument
35646 MA_STATE(ms, mt, 1, 1); in check_nomem()
35648 MT_BUG_ON(mt, !mtree_empty(mt)); in check_nomem()
35653 MT_BUG_ON(mt, mtree_insert(mt, 1, &ms, GFP_ATOMIC) != -ENOMEM); in check_nomem()
35655 MT_BUG_ON(mt, mtree_insert(mt, 0, &ms, GFP_ATOMIC) != 0); in check_nomem()
35665 mtree_lock(mt); in check_nomem()
35667 MT_BUG_ON(mt, ms.node != MA_ERROR(-ENOMEM)); in check_nomem()
35669 MT_BUG_ON(mt, ms.status != ma_start); in check_nomem()
35670 mtree_unlock(mt); in check_nomem()
35671 MT_BUG_ON(mt, mtree_insert(mt, 2, mt, GFP_KERNEL) != 0); in check_nomem()
35672 mtree_lock(mt); in check_nomem()
35675 mtree_unlock(mt); in check_nomem()
35677 mtree_destroy(mt); in check_nomem()
35680 static noinline void __init check_locky(struct maple_tree *mt) in check_locky() argument
35682 MA_STATE(ms, mt, 2, 2); in check_locky()
35683 MA_STATE(reader, mt, 2, 2); in check_locky()
35686 mt_set_in_rcu(mt); in check_locky()
35692 mt_clear_in_rcu(mt); in check_locky()
35849 static __init int build_full_tree(struct maple_tree *mt, unsigned int flags, in build_full_tree() argument
35852 MA_STATE(mas, mt, 0, 0); in build_full_tree()
35857 mt_init_flags(mt, flags); in build_full_tree()
35858 mtree_insert_range(mt, 0, ULONG_MAX, xa_mk_value(5), GFP_KERNEL); in build_full_tree()
35860 mtree_lock(mt); in build_full_tree()
35864 if (mt_height(mt) < height) { in build_full_tree()
35895 mtree_unlock(mt); in build_full_tree()
35897 MT_BUG_ON(mt, mt_height(mt) != height); in build_full_tree()
35902 static noinline void __init check_erase_rebalance(struct maple_tree *mt) in check_erase_rebalance() argument
35908 MA_STATE(mas, mt, 0, 0); in check_erase_rebalance()
35935 ret = build_full_tree(mt, MT_FLAGS_ALLOC_RANGE, 4); in check_erase_rebalance()
35936 MT_BUG_ON(mt, ret); in check_erase_rebalance()
35939 mtree_store(mt, ULONG_MAX, xa_mk_value(0), GFP_KERNEL); in check_erase_rebalance()
35941 mt_set_in_rcu(mt); in check_erase_rebalance()
36023 static noinline void __init check_mtree_dup(struct maple_tree *mt) in check_mtree_dup() argument
36030 mt_init_flags(mt, 0); in check_mtree_dup()
36031 mtree_store_range(mt, 0, 0, xa_mk_value(0), GFP_KERNEL); in check_mtree_dup()
36032 ret = mtree_dup(mt, &new, GFP_KERNEL); in check_mtree_dup()
36035 if (compare_tree(mt, &new)) in check_mtree_dup()
36038 mtree_destroy(mt); in check_mtree_dup()
36042 mt_init_flags(mt, 0); in check_mtree_dup()
36044 ret = mtree_dup(mt, &new, GFP_KERNEL); in check_mtree_dup()
36046 mtree_destroy(mt); in check_mtree_dup()
36050 mt_init_flags(mt, 0); in check_mtree_dup()
36053 ret = mtree_dup(mt, &new, GFP_KERNEL); in check_mtree_dup()
36055 mtree_destroy(mt); in check_mtree_dup()
36060 ret = build_full_tree(mt, 0, i); in check_mtree_dup()
36061 MT_BUG_ON(mt, ret); in check_mtree_dup()
36064 ret = mtree_dup(mt, &new, GFP_KERNEL); in check_mtree_dup()
36067 if (compare_tree(mt, &new)) in check_mtree_dup()
36070 mtree_destroy(mt); in check_mtree_dup()
36075 ret = build_full_tree(mt, MT_FLAGS_ALLOC_RANGE, i); in check_mtree_dup()
36076 MT_BUG_ON(mt, ret); in check_mtree_dup()
36079 ret = mtree_dup(mt, &new, GFP_KERNEL); in check_mtree_dup()
36082 if (compare_tree(mt, &new)) in check_mtree_dup()
36085 mtree_destroy(mt); in check_mtree_dup()
36092 mt_init_flags(mt, 0); in check_mtree_dup()
36095 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_mtree_dup()
36100 mtree_store_range(mt, j * 10, j * 10 + 5, in check_mtree_dup()
36104 ret = mtree_dup(mt, &new, GFP_KERNEL); in check_mtree_dup()
36107 if (compare_tree(mt, &new)) in check_mtree_dup()
36110 mtree_destroy(mt); in check_mtree_dup()
36115 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_mtree_dup()
36117 mtree_store_range(mt, j * 10, j * 10 + 5, in check_mtree_dup()
36124 ret = mtree_dup(mt, &new, GFP_NOWAIT); in check_mtree_dup()
36127 mtree_destroy(mt); in check_mtree_dup()
36133 mt_init_flags(mt, 0); in check_mtree_dup()
36136 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); in check_mtree_dup()
36141 mtree_store_range(mt, j * 10, j * 10 + 5, in check_mtree_dup()
36152 ret = mtree_dup(mt, &new, GFP_NOWAIT); in check_mtree_dup()
36157 mtree_destroy(mt); in check_mtree_dup()
36162 if (compare_tree(mt, &new)) in check_mtree_dup()
36165 mtree_destroy(mt); in check_mtree_dup()
36175 static inline void check_spanning_store_height(struct maple_tree *mt) in check_spanning_store_height() argument
36179 MA_STATE(mas, mt, 0, 0); in check_spanning_store_height()
36181 while (mt_height(mt) != 3) { in check_spanning_store_height()
36191 MT_BUG_ON(mt, mas_mt_height(&mas) != 2); in check_spanning_store_height()
36200 static void check_collapsing_rebalance(struct maple_tree *mt) in check_collapsing_rebalance() argument
36203 MA_STATE(mas, mt, ULONG_MAX, ULONG_MAX); in check_collapsing_rebalance()
36206 while (mt_height(mt) < 6) { in check_collapsing_rebalance()
36207 mtree_store_range(mt, i, i + 10, xa_mk_value(i), GFP_KERNEL); in check_collapsing_rebalance()
36216 mtree_unlock(mt); in check_collapsing_rebalance()
36222 struct maple_tree *mt = (struct maple_tree *)maple_tree; in writer2() local
36223 MA_STATE(mas, mt, 6, 10); in writer2()
36240 static void check_nomem_writer_race(struct maple_tree *mt) in check_nomem_writer_race() argument
36242 MA_STATE(mas, mt, 0, 5); in check_nomem_writer_race()
36246 mtree_store_range(mt, 0, 5, xa_mk_value(0xA), GFP_KERNEL); in check_nomem_writer_race()
36247 mtree_store_range(mt, 6, 10, NULL, GFP_KERNEL); in check_nomem_writer_race()
36248 mtree_store_range(mt, 11, 15, xa_mk_value(0xB), GFP_KERNEL); in check_nomem_writer_race()
36251 mt_set_private(mt); in check_nomem_writer_race()
36254 mtree_lock(mt); in check_nomem_writer_race()
36259 check_load(mt, 6, xa_mk_value(0xC)); in check_nomem_writer_race()
36260 mtree_unlock(mt); in check_nomem_writer_race()
36264 mtree_store_range(mt, 0, 5, xa_mk_value(0xA), GFP_KERNEL); in check_nomem_writer_race()
36265 mtree_store_range(mt, 6, 10, NULL, GFP_KERNEL); in check_nomem_writer_race()
36270 mt_set_private(mt); in check_nomem_writer_race()
36273 mtree_lock(mt); in check_nomem_writer_race()
36277 check_load(mt, 6, xa_mk_value(0xC)); in check_nomem_writer_race()
36281 mtree_unlock(mt); in check_nomem_writer_race()
36288 static inline int check_vma_modification(struct maple_tree *mt) in check_vma_modification() argument
36291 MA_STATE(mas, mt, 0, 0); in check_vma_modification()
36293 mtree_lock(mt); in check_vma_modification()
36310 mt_dump(mt, mt_dump_hex); in check_vma_modification()
36313 mtree_unlock(mt); in check_vma_modification()
36419 enum maple_type mt = mte_node_type(mas->node); in get_last_index() local
36420 unsigned long *pivots = ma_pivots(node, mt); in get_last_index()