Lines Matching refs:mas

70 	MA_STATE(mas, mt, 0, 0);  in check_new_node()
76 mas_node_count(&mas, 3); in check_new_node()
78 MT_BUG_ON(mt, mas_alloc_req(&mas) != 3); in check_new_node()
80 MT_BUG_ON(mt, mas.node != MA_ERROR(-ENOMEM)); in check_new_node()
81 MT_BUG_ON(mt, !mas_nomem(&mas, GFP_KERNEL)); in check_new_node()
83 MT_BUG_ON(mt, mas_allocated(&mas) != 3); in check_new_node()
84 mn = mas_pop_node(&mas); in check_new_node()
87 MT_BUG_ON(mt, mas.alloc == NULL); in check_new_node()
88 MT_BUG_ON(mt, mas.alloc->slot[0] == NULL); in check_new_node()
89 mas_push_node(&mas, mn); in check_new_node()
90 mas_nomem(&mas, GFP_KERNEL); /* free */ in check_new_node()
97 mas_set_alloc_req(&mas, 1); in check_new_node()
99 MT_BUG_ON(mt, mas_alloc_req(&mas) != 1); in check_new_node()
100 mas_set_err(&mas, -ENOMEM); in check_new_node()
102 MT_BUG_ON(mt, !mas_nomem(&mas, GFP_KERNEL)); in check_new_node()
104 mn = mas_pop_node(&mas); in check_new_node()
109 MT_BUG_ON(mt, mas_allocated(&mas) != 0); in check_new_node()
112 mas.node = MAS_START; in check_new_node()
113 mas_nomem(&mas, GFP_KERNEL); in check_new_node()
115 mas_node_count(&mas, 3); in check_new_node()
117 mas_nomem(&mas, GFP_KERNEL); in check_new_node()
119 MT_BUG_ON(mt, mas_allocated(&mas) != 3); in check_new_node()
121 MT_BUG_ON(mt, mas_alloc_req(&mas) != 0); in check_new_node()
123 MT_BUG_ON(mt, mas.alloc == NULL); in check_new_node()
124 MT_BUG_ON(mt, mas.alloc->slot[0] == NULL); in check_new_node()
125 MT_BUG_ON(mt, mas.alloc->slot[1] == NULL); in check_new_node()
127 MT_BUG_ON(mt, mas_allocated(&mas) != 3); in check_new_node()
129 mas_nomem(&mas, GFP_KERNEL); in check_new_node()
132 mas_set_alloc_req(&mas, 1); in check_new_node()
133 MT_BUG_ON(mt, mas_alloc_req(&mas) != 1); in check_new_node()
134 mas_set_err(&mas, -ENOMEM); in check_new_node()
136 MT_BUG_ON(mt, !mas_nomem(&mas, GFP_KERNEL)); in check_new_node()
137 MT_BUG_ON(mt, mas_allocated(&mas) != 1); in check_new_node()
139 mn = mas_pop_node(&mas); in check_new_node()
141 MT_BUG_ON(mt, mas_allocated(&mas) != 0); in check_new_node()
145 MT_BUG_ON(mt, mas_allocated(&mas) != 0); in check_new_node()
146 mas_push_node(&mas, mn); in check_new_node()
147 MT_BUG_ON(mt, mas_allocated(&mas) != 1); in check_new_node()
148 MT_BUG_ON(mt, mas.alloc->node_count); in check_new_node()
150 mas_set_alloc_req(&mas, 2); /* request 2 more. */ in check_new_node()
151 MT_BUG_ON(mt, mas_alloc_req(&mas) != 2); in check_new_node()
152 mas_set_err(&mas, -ENOMEM); in check_new_node()
153 MT_BUG_ON(mt, !mas_nomem(&mas, GFP_KERNEL)); in check_new_node()
154 MT_BUG_ON(mt, mas_allocated(&mas) != 3); in check_new_node()
155 MT_BUG_ON(mt, mas.alloc == NULL); in check_new_node()
156 MT_BUG_ON(mt, mas.alloc->slot[0] == NULL); in check_new_node()
157 MT_BUG_ON(mt, mas.alloc->slot[1] == NULL); in check_new_node()
159 mn = mas_pop_node(&mas); in check_new_node()
160 MT_BUG_ON(mt, mas_allocated(&mas) != i); in check_new_node()
167 mas_set_alloc_req(&mas, total); /* request 2 more. */ in check_new_node()
168 MT_BUG_ON(mt, mas_alloc_req(&mas) != total); in check_new_node()
169 mas_set_err(&mas, -ENOMEM); in check_new_node()
170 MT_BUG_ON(mt, !mas_nomem(&mas, GFP_KERNEL)); in check_new_node()
190 MT_BUG_ON(mt, mas.alloc->node_count != e); in check_new_node()
191 mn = mas_pop_node(&mas); in check_new_node()
193 MT_BUG_ON(mt, mas_allocated(&mas) != i - 1); in check_new_node()
200 mas_set_alloc_req(&mas, i); in check_new_node()
201 mas_set_err(&mas, -ENOMEM); in check_new_node()
202 MT_BUG_ON(mt, !mas_nomem(&mas, GFP_KERNEL)); in check_new_node()
204 mn = mas_pop_node(&mas); in check_new_node()
205 MT_BUG_ON(mt, mas_allocated(&mas) != j - 1); in check_new_node()
208 mas_push_node(&mas, mn); in check_new_node()
209 MT_BUG_ON(mt, mas_allocated(&mas) != j); in check_new_node()
210 mn = mas_pop_node(&mas); in check_new_node()
212 MT_BUG_ON(mt, mas_allocated(&mas) != j - 1); in check_new_node()
215 MT_BUG_ON(mt, mas_allocated(&mas) != 0); in check_new_node()
217 mas_set_alloc_req(&mas, i); in check_new_node()
218 mas_set_err(&mas, -ENOMEM); in check_new_node()
219 MT_BUG_ON(mt, !mas_nomem(&mas, GFP_KERNEL)); in check_new_node()
221 MT_BUG_ON(mt, mas_allocated(&mas) != i - j); in check_new_node()
222 nodes[j] = mas_pop_node(&mas); in check_new_node()
223 MT_BUG_ON(mt, mas_allocated(&mas) != i - j - 1); in check_new_node()
228 mas_push_node(&mas, nodes[j]); in check_new_node()
229 MT_BUG_ON(mt, mas_allocated(&mas) != i - j); in check_new_node()
231 MT_BUG_ON(mt, mas_allocated(&mas) != i); in check_new_node()
233 MT_BUG_ON(mt, mas_allocated(&mas) != i - j); in check_new_node()
234 mn = mas_pop_node(&mas); in check_new_node()
237 MT_BUG_ON(mt, mas_allocated(&mas) != i - j - 1); in check_new_node()
239 MT_BUG_ON(mt, mas_nomem(&mas, GFP_KERNEL)); in check_new_node()
245 mas_node_count(&mas, total); in check_new_node()
247 mas_nomem(&mas, GFP_KERNEL); in check_new_node()
248 MT_BUG_ON(mt, !mas.alloc); in check_new_node()
250 smn = mas.alloc; in check_new_node()
260 MT_BUG_ON(mt, mas_allocated(&mas) != total); in check_new_node()
261 mas_nomem(&mas, GFP_KERNEL); /* Free. */ in check_new_node()
263 MT_BUG_ON(mt, mas_allocated(&mas) != 0); in check_new_node()
265 mas_node_count(&mas, i); /* Request */ in check_new_node()
266 mas_nomem(&mas, GFP_KERNEL); /* Fill request */ in check_new_node()
267 MT_BUG_ON(mt, mas_allocated(&mas) != i); /* check request filled */ in check_new_node()
269 mn = mas_pop_node(&mas); /* get the next node. */ in check_new_node()
274 MT_BUG_ON(mt, mas_allocated(&mas) != 0); in check_new_node()
279 mas_node_count(&mas, i); /* Request */ in check_new_node()
280 mas_nomem(&mas, GFP_KERNEL); /* Fill request */ in check_new_node()
281 MT_BUG_ON(mt, mas_allocated(&mas) != i); /* check request filled */ in check_new_node()
283 mn = mas_pop_node(&mas); /* get the next node. */ in check_new_node()
289 MT_BUG_ON(mt, mas_allocated(&mas) != 0); in check_new_node()
303 MT_BUG_ON(mt, mas_allocated(&mas) != 0); in check_new_node()
304 mas_node_count(&mas, MAPLE_ALLOC_SLOTS + 1); /* Request */ in check_new_node()
305 MT_BUG_ON(mt, mas.node != MA_ERROR(-ENOMEM)); in check_new_node()
306 MT_BUG_ON(mt, !mas_nomem(&mas, GFP_KERNEL)); in check_new_node()
307 MT_BUG_ON(mt, mas_allocated(&mas) != MAPLE_ALLOC_SLOTS + 1); in check_new_node()
308 MT_BUG_ON(mt, mas.alloc->node_count != MAPLE_ALLOC_SLOTS); in check_new_node()
310 mn = mas_pop_node(&mas); /* get the next node. */ in check_new_node()
313 MT_BUG_ON(mt, mas_allocated(&mas) != MAPLE_ALLOC_SLOTS); in check_new_node()
314 MT_BUG_ON(mt, mas.alloc->node_count != MAPLE_ALLOC_SLOTS - 1); in check_new_node()
316 mas_push_node(&mas, mn); in check_new_node()
317 MT_BUG_ON(mt, mas_allocated(&mas) != MAPLE_ALLOC_SLOTS + 1); in check_new_node()
318 MT_BUG_ON(mt, mas.alloc->node_count != MAPLE_ALLOC_SLOTS); in check_new_node()
321 mas_node_count(&mas, MAPLE_ALLOC_SLOTS + 2); /* Request */ in check_new_node()
322 MT_BUG_ON(mt, mas_alloc_req(&mas) != 1); in check_new_node()
323 MT_BUG_ON(mt, mas.node != MA_ERROR(-ENOMEM)); in check_new_node()
324 MT_BUG_ON(mt, !mas_nomem(&mas, GFP_KERNEL)); in check_new_node()
325 MT_BUG_ON(mt, mas_alloc_req(&mas)); in check_new_node()
326 MT_BUG_ON(mt, mas.alloc->node_count != 1); in check_new_node()
327 MT_BUG_ON(mt, mas_allocated(&mas) != MAPLE_ALLOC_SLOTS + 2); in check_new_node()
328 mn = mas_pop_node(&mas); in check_new_node()
330 MT_BUG_ON(mt, mas_allocated(&mas) != MAPLE_ALLOC_SLOTS + 1); in check_new_node()
331 MT_BUG_ON(mt, mas.alloc->node_count != MAPLE_ALLOC_SLOTS); in check_new_node()
332 mas_push_node(&mas, mn); in check_new_node()
333 MT_BUG_ON(mt, mas.alloc->node_count != 1); in check_new_node()
334 MT_BUG_ON(mt, mas_allocated(&mas) != MAPLE_ALLOC_SLOTS + 2); in check_new_node()
335 mn = mas_pop_node(&mas); in check_new_node()
339 mn = mas_pop_node(&mas); in check_new_node()
343 MT_BUG_ON(mt, mas_allocated(&mas) != 0); in check_new_node()
347 mas.node = MA_ERROR(-ENOMEM); in check_new_node()
348 mas_node_count(&mas, i); /* Request */ in check_new_node()
349 mas_nomem(&mas, GFP_KERNEL); /* Fill request */ in check_new_node()
350 mn = mas_pop_node(&mas); /* get the next node. */ in check_new_node()
351 mas_push_node(&mas, mn); /* put it back */ in check_new_node()
352 mas_destroy(&mas); in check_new_node()
354 mas.node = MA_ERROR(-ENOMEM); in check_new_node()
355 mas_node_count(&mas, i); /* Request */ in check_new_node()
356 mas_nomem(&mas, GFP_KERNEL); /* Fill request */ in check_new_node()
357 mn = mas_pop_node(&mas); /* get the next node. */ in check_new_node()
358 mn2 = mas_pop_node(&mas); /* get the next node. */ in check_new_node()
359 mas_push_node(&mas, mn); /* put them back */ in check_new_node()
360 mas_push_node(&mas, mn2); in check_new_node()
361 mas_destroy(&mas); in check_new_node()
363 mas.node = MA_ERROR(-ENOMEM); in check_new_node()
364 mas_node_count(&mas, i); /* Request */ in check_new_node()
365 mas_nomem(&mas, GFP_KERNEL); /* Fill request */ in check_new_node()
366 mn = mas_pop_node(&mas); /* get the next node. */ in check_new_node()
367 mn2 = mas_pop_node(&mas); /* get the next node. */ in check_new_node()
368 mn3 = mas_pop_node(&mas); /* get the next node. */ in check_new_node()
369 mas_push_node(&mas, mn); /* put them back */ in check_new_node()
370 mas_push_node(&mas, mn2); in check_new_node()
371 mas_push_node(&mas, mn3); in check_new_node()
372 mas_destroy(&mas); in check_new_node()
374 mas.node = MA_ERROR(-ENOMEM); in check_new_node()
375 mas_node_count(&mas, i); /* Request */ in check_new_node()
376 mas_nomem(&mas, GFP_KERNEL); /* Fill request */ in check_new_node()
377 mn = mas_pop_node(&mas); /* get the next node. */ in check_new_node()
379 mas_destroy(&mas); in check_new_node()
381 mas.node = MA_ERROR(-ENOMEM); in check_new_node()
382 mas_node_count(&mas, i); /* Request */ in check_new_node()
383 mas_nomem(&mas, GFP_KERNEL); /* Fill request */ in check_new_node()
384 mn = mas_pop_node(&mas); /* get the next node. */ in check_new_node()
386 mn = mas_pop_node(&mas); /* get the next node. */ in check_new_node()
388 mn = mas_pop_node(&mas); /* get the next node. */ in check_new_node()
390 mas_destroy(&mas); in check_new_node()
393 mas.node = MA_ERROR(-ENOMEM); in check_new_node()
394 mas_node_count(&mas, 5); /* Request */ in check_new_node()
395 mas_nomem(&mas, GFP_KERNEL); /* Fill request */ in check_new_node()
396 MT_BUG_ON(mt, mas_allocated(&mas) != 5); in check_new_node()
397 mas.node = MA_ERROR(-ENOMEM); in check_new_node()
398 mas_node_count(&mas, 10); /* Request */ in check_new_node()
399 mas_nomem(&mas, GFP_KERNEL); /* Fill request */ in check_new_node()
400 mas.node = MAS_START; in check_new_node()
401 MT_BUG_ON(mt, mas_allocated(&mas) != 10); in check_new_node()
402 mas_destroy(&mas); in check_new_node()
404 mas.node = MA_ERROR(-ENOMEM); in check_new_node()
405 mas_node_count(&mas, MAPLE_ALLOC_SLOTS - 1); /* Request */ in check_new_node()
406 mas_nomem(&mas, GFP_KERNEL); /* Fill request */ in check_new_node()
407 MT_BUG_ON(mt, mas_allocated(&mas) != MAPLE_ALLOC_SLOTS - 1); in check_new_node()
408 mas.node = MA_ERROR(-ENOMEM); in check_new_node()
409 mas_node_count(&mas, 10 + MAPLE_ALLOC_SLOTS - 1); /* Request */ in check_new_node()
410 mas_nomem(&mas, GFP_KERNEL); /* Fill request */ in check_new_node()
411 mas.node = MAS_START; in check_new_node()
412 MT_BUG_ON(mt, mas_allocated(&mas) != 10 + MAPLE_ALLOC_SLOTS - 1); in check_new_node()
413 mas_destroy(&mas); in check_new_node()
772 static inline void mas_node_walk(struct ma_state *mas, struct maple_node *node, in mas_node_walk() argument
784 (*range_max) = (*range_min) = mas->index; in mas_node_walk()
788 mas->offset = mas->index = mas->min; in mas_node_walk()
798 prev = mas->min; in mas_node_walk()
799 index = mas->index; in mas_node_walk()
818 max = mas->max; in mas_node_walk()
822 mas->offset = offset; in mas_node_walk()
827 mas->max = max; in mas_node_walk()
828 mas->min = prev; in mas_node_walk()
844 static inline bool mas_descend_walk(struct ma_state *mas, in mas_descend_walk() argument
851 next = mas->node; in mas_descend_walk()
855 mas_node_walk(mas, node, type, range_min, range_max); in mas_descend_walk()
856 next = mas_slot(mas, ma_slots(node, type), mas->offset); in mas_descend_walk()
864 mas->node = next; in mas_descend_walk()
879 static inline bool mas_tree_walk(struct ma_state *mas, unsigned long *range_min, in mas_tree_walk() argument
886 mas_start(mas); in mas_tree_walk()
887 if (mas_is_none(mas)) in mas_tree_walk()
890 if (mas_is_ptr(mas)) { in mas_tree_walk()
892 if (!mas->index) in mas_tree_walk()
898 ret = mas_descend_walk(mas, range_min, range_max); in mas_tree_walk()
899 if (unlikely(mte_dead_node(mas->node))) { in mas_tree_walk()
900 mas->node = MAS_START; in mas_tree_walk()
907 mas->offset = MAPLE_NODE_SLOTS; in mas_tree_walk()
911 static inline void *mas_range_load(struct ma_state *mas, in mas_range_load() argument
916 unsigned long index = mas->index; in mas_range_load()
918 if (mas_is_none(mas) || mas_is_paused(mas)) in mas_range_load()
919 mas->node = MAS_START; in mas_range_load()
921 if (mas_tree_walk(mas, range_min, range_max)) in mas_range_load()
922 if (unlikely(mas->node == MAS_ROOT)) in mas_range_load()
923 return mas_root(mas); in mas_range_load()
925 if (likely(mas->offset != MAPLE_NODE_SLOTS)) in mas_range_load()
926 entry = mas_get_slot(mas, mas->offset); in mas_range_load()
928 if (mas_dead_node(mas, index)) in mas_range_load()
944 MA_STATE(mas, mt, 0, 0); in check_erase2_testset()
1045 mas_reset(&mas); in check_erase2_testset()
1046 mas.index = 0; in check_erase2_testset()
1048 mas_for_each(&mas, foo, ULONG_MAX) { in check_erase2_testset()
1050 if (addr == mas.index) { in check_erase2_testset()
1051 mt_dump(mas.tree); in check_erase2_testset()
1053 mas.index, mas.last); in check_erase2_testset()
1056 addr = mas.index; in check_erase2_testset()
1060 pr_err("mas: %lu -> %p\n", mas.index, foo); in check_erase2_testset()
1074 MT_BUG_ON(mt, mtree_load(mas.tree, 0) != NULL); in check_erase2_testset()
33852 MA_STATE(mas, mt, 0, 0); in check_erase2_sets()
33874 mas_for_each(&mas, entry, ULONG_MAX) { in check_erase2_sets()
33914 mas_reset(&mas); in check_erase2_sets()
33918 mas_empty_area_rev(&mas, 12288, 140014592737280, 0x2000); in check_erase2_sets()
33919 MT_BUG_ON(mt, mas.last != 140014592573439); in check_erase2_sets()
33922 mas_reset(&mas); in check_erase2_sets()
33923 mas.tree = mt; in check_erase2_sets()
33925 mas.index = 0; in check_erase2_sets()
33929 mas_for_each(&mas, entry, ULONG_MAX) { in check_erase2_sets()
33937 mas_reset(&mas); in check_erase2_sets()
33942 mas_empty_area_rev(&mas, 0, 140373518663680, 4096); in check_erase2_sets()
33957 mas_reset(&mas); in check_erase2_sets()
33961 mas_empty_area_rev(&mas, 4096, 139921865637888, 0x6000); in check_erase2_sets()
33962 MT_BUG_ON(mt, mas.last != 139921865547775); in check_erase2_sets()
33972 mas_reset(&mas); in check_erase2_sets()
33976 mas_empty_area_rev(&mas, 4096, 139953197334528, 0x1000); in check_erase2_sets()
33977 MT_BUG_ON(mt, mas.last != 139953197322239); in check_erase2_sets()
33988 mas_reset(&mas); in check_erase2_sets()
33992 mas_empty_area_rev(&mas, 4096, 140222972858368, 2215936); in check_erase2_sets()
33993 MT_BUG_ON(mt, mas.last != 140222968475647); in check_erase2_sets()
34006 mas_reset(&mas); in check_erase2_sets()
34010 mas.index = 140656779083776; in check_erase2_sets()
34011 entry = mas_find(&mas, ULONG_MAX); in check_erase2_sets()
34013 entry = mas_prev(&mas, 0); in check_erase2_sets()
34075 mas_reset(&mas); in check_erase2_sets()
34079 mas_empty_area_rev(&mas, 4096, 140109042671616, 409600); in check_erase2_sets()
34080 MT_BUG_ON(mt, mas.last != 140109040959487); in check_erase2_sets()
34087 mas_reset(&mas); in check_erase2_sets()
34097 mas_reset(&mas); in check_erase2_sets()
34101 mas_empty_area_rev(&mas, 4096, 139918413357056, 2097152); in check_erase2_sets()
34103 mas.index = (mas.last + 1 - 2097152 - 0) & (~2093056); in check_erase2_sets()
34104 MT_BUG_ON(mt, mas.index != 139918401601536); in check_erase2_sets()
34113 mas_reset(&mas); in check_erase2_sets()
34126 mas_reset(&mas); in check_erase2_sets()
34139 mas_reset(&mas); in check_erase2_sets()
34148 mas_reset(&mas); in check_erase2_sets()
34168 mas_reset(&mas); in check_erase2_sets()
34172 mas_empty_area_rev(&mas, 4096, 140583656296448, 134217728); in check_erase2_sets()
34173 MT_BUG_ON(mt, mas.last != 140583003750399); in check_erase2_sets()
34183 mas_reset(&mas); in check_erase2_sets()
34193 mas_reset(&mas); in check_erase2_sets()
34203 mas_reset(&mas); in check_erase2_sets()
34211 mas_reset(&mas); in check_erase2_sets()
34219 mas_reset(&mas); in check_erase2_sets()
34227 mas_reset(&mas); in check_erase2_sets()
34234 mas_reset(&mas); in check_erase2_sets()
34241 mas_reset(&mas); in check_erase2_sets()
34250 mas_reset(&mas); in check_erase2_sets()
34254 mas_empty_area_rev(&mas, 4096, 4052029440, 28672); in check_erase2_sets()
34255 MT_BUG_ON(mt, mas.last != 4041211903); in check_erase2_sets()
34262 mas_reset(&mas); in check_erase2_sets()
34307 MA_STATE(mas, test->mt, 0, 0); in rcu_reader_fwd()
34316 mas_set(&mas, test->index[index]); in rcu_reader_fwd()
34317 mas_for_each(&mas, entry, test->last[index + 9]) { in rcu_reader_fwd()
34329 if (mas.index == alt_start) { in rcu_reader_fwd()
34344 if (mas.index == r_start) { in rcu_reader_fwd()
34347 } else if (mas.index == alt_start) { in rcu_reader_fwd()
34355 RCU_MT_BUG_ON(test, mas.index != r_start); in rcu_reader_fwd()
34356 RCU_MT_BUG_ON(test, mas.last != r_end); in rcu_reader_fwd()
34372 printk("!!%lu-%lu -> %p not %p or %p\n", mas.index, mas.last, entry, expected, alt); in rcu_reader_fwd()
34395 printk("!!%lu-%lu -> %p not %p\n", mas.index, mas.last, entry, expected); in rcu_reader_fwd()
34417 MA_STATE(mas, test->mt, 0, 0); in rcu_reader_rev()
34427 mas_set(&mas, test->index[index + i]); in rcu_reader_rev()
34435 entry = mas_prev(&mas, test->index[index]); in rcu_reader_rev()
34442 if (mas.index == alt_start) { in rcu_reader_rev()
34458 if (mas.index == r_start) { in rcu_reader_rev()
34462 } else if (mas.index == alt_start) { in rcu_reader_rev()
34476 if (mas.index != r_start) { in rcu_reader_rev()
34481 mas.index, mas.last, entry, in rcu_reader_rev()
34485 RCU_MT_BUG_ON(test, mas.index != r_start); in rcu_reader_rev()
34486 RCU_MT_BUG_ON(test, mas.last != r_end); in rcu_reader_rev()
34521 mas.index, mas.last, entry, in rcu_reader_rev()
34529 printk("%lu-%lu %p != %p\n", mas.index, in rcu_reader_rev()
34530 mas.last, entry, expected); in rcu_reader_rev()
34846 MA_STATE(mas, test->mt, test->range_start, test->range_start); in rcu_loop()
34857 mas_for_each(&mas, entry, test->range_end) { in rcu_loop()
34859 expected = xa_mk_value(mas.index ? mas.index / 10 : 0); in rcu_loop()
34862 if (mas.index < test->index || mas.index > test->last) { in rcu_loop()
34865 mas.index, mas.last, entry, expected); in rcu_loop()
34880 mas_set(&mas, test->range_start); in rcu_loop()
35220 static void mas_dfs_preorder(struct ma_state *mas) in mas_dfs_preorder() argument
35226 if (mas->node == MAS_START) { in mas_dfs_preorder()
35227 mas_start(mas); in mas_dfs_preorder()
35231 if (mte_is_leaf(mas->node) && mte_is_root(mas->node)) in mas_dfs_preorder()
35235 end = mas_data_end(mas); in mas_dfs_preorder()
35236 if (mte_is_leaf(mas->node) || in mas_dfs_preorder()
35238 if (mte_is_root(mas->node)) in mas_dfs_preorder()
35241 slot = mte_parent_slot(mas->node) + 1; in mas_dfs_preorder()
35242 mas_ascend(mas); in mas_dfs_preorder()
35246 prev = mas->node; in mas_dfs_preorder()
35247 mas->node = mas_get_slot(mas, slot); in mas_dfs_preorder()
35248 if (!mas->node || slot > end) { in mas_dfs_preorder()
35252 mas->node = prev; in mas_dfs_preorder()
35253 slot = mte_parent_slot(mas->node) + 1; in mas_dfs_preorder()
35254 mas_ascend(mas); in mas_dfs_preorder()
35260 mas->node = MAS_NONE; in mas_dfs_preorder()
35268 MA_STATE(mas, mt, 0, 0); in check_dfs_preorder()
35278 mas_dfs_preorder(&mas); in check_dfs_preorder()
35279 } while (!mas_is_none(&mas)); in check_dfs_preorder()
35284 mas_reset(&mas); in check_dfs_preorder()
35292 mas_dfs_preorder(&mas); in check_dfs_preorder()
35293 } while (!mas_is_none(&mas)); in check_dfs_preorder()
35299 mas_reset(&mas); in check_dfs_preorder()
35304 mas_dfs_preorder(&mas); in check_dfs_preorder()
35305 } while (!mas_is_none(&mas)); in check_dfs_preorder()
35311 mas_reset(&mas); in check_dfs_preorder()
35314 mas_expected_entries(&mas, max); in check_dfs_preorder()
35316 mas.index = mas.last = count; in check_dfs_preorder()
35317 mas_store(&mas, xa_mk_value(count)); in check_dfs_preorder()
35318 MT_BUG_ON(mt, mas_is_err(&mas)); in check_dfs_preorder()
35320 mas_destroy(&mas); in check_dfs_preorder()
35339 MA_STATE(mas, mt, 10, 20); in check_prealloc()
35345 MT_BUG_ON(mt, mas_preallocate(&mas, GFP_KERNEL) != 0); in check_prealloc()
35346 allocated = mas_allocated(&mas); in check_prealloc()
35347 height = mas_mt_height(&mas); in check_prealloc()
35350 mas_destroy(&mas); in check_prealloc()
35351 allocated = mas_allocated(&mas); in check_prealloc()
35354 MT_BUG_ON(mt, mas_preallocate(&mas, GFP_KERNEL) != 0); in check_prealloc()
35355 allocated = mas_allocated(&mas); in check_prealloc()
35356 height = mas_mt_height(&mas); in check_prealloc()
35359 MT_BUG_ON(mt, mas_preallocate(&mas, GFP_KERNEL) != 0); in check_prealloc()
35360 mas_destroy(&mas); in check_prealloc()
35361 allocated = mas_allocated(&mas); in check_prealloc()
35365 MT_BUG_ON(mt, mas_preallocate(&mas, GFP_KERNEL) != 0); in check_prealloc()
35366 allocated = mas_allocated(&mas); in check_prealloc()
35367 height = mas_mt_height(&mas); in check_prealloc()
35370 mn = mas_pop_node(&mas); in check_prealloc()
35371 MT_BUG_ON(mt, mas_allocated(&mas) != allocated - 1); in check_prealloc()
35373 MT_BUG_ON(mt, mas_preallocate(&mas, GFP_KERNEL) != 0); in check_prealloc()
35374 mas_destroy(&mas); in check_prealloc()
35375 allocated = mas_allocated(&mas); in check_prealloc()
35378 MT_BUG_ON(mt, mas_preallocate(&mas, GFP_KERNEL) != 0); in check_prealloc()
35379 allocated = mas_allocated(&mas); in check_prealloc()
35380 height = mas_mt_height(&mas); in check_prealloc()
35383 mn = mas_pop_node(&mas); in check_prealloc()
35384 MT_BUG_ON(mt, mas_allocated(&mas) != allocated - 1); in check_prealloc()
35385 MT_BUG_ON(mt, mas_preallocate(&mas, GFP_KERNEL) != 0); in check_prealloc()
35386 mas_destroy(&mas); in check_prealloc()
35387 allocated = mas_allocated(&mas); in check_prealloc()
35391 MT_BUG_ON(mt, mas_preallocate(&mas, GFP_KERNEL) != 0); in check_prealloc()
35392 allocated = mas_allocated(&mas); in check_prealloc()
35393 height = mas_mt_height(&mas); in check_prealloc()
35396 mn = mas_pop_node(&mas); in check_prealloc()
35397 MT_BUG_ON(mt, mas_allocated(&mas) != allocated - 1); in check_prealloc()
35398 mas_push_node(&mas, mn); in check_prealloc()
35399 MT_BUG_ON(mt, mas_allocated(&mas) != allocated); in check_prealloc()
35400 MT_BUG_ON(mt, mas_preallocate(&mas, GFP_KERNEL) != 0); in check_prealloc()
35401 mas_destroy(&mas); in check_prealloc()
35402 allocated = mas_allocated(&mas); in check_prealloc()
35405 MT_BUG_ON(mt, mas_preallocate(&mas, GFP_KERNEL) != 0); in check_prealloc()
35406 allocated = mas_allocated(&mas); in check_prealloc()
35407 height = mas_mt_height(&mas); in check_prealloc()
35410 mas_store_prealloc(&mas, ptr); in check_prealloc()
35411 MT_BUG_ON(mt, mas_allocated(&mas) != 0); in check_prealloc()
35413 MT_BUG_ON(mt, mas_preallocate(&mas, GFP_KERNEL) != 0); in check_prealloc()
35414 allocated = mas_allocated(&mas); in check_prealloc()
35415 height = mas_mt_height(&mas); in check_prealloc()
35418 mas_store_prealloc(&mas, ptr); in check_prealloc()
35419 MT_BUG_ON(mt, mas_allocated(&mas) != 0); in check_prealloc()
35420 MT_BUG_ON(mt, mas_preallocate(&mas, GFP_KERNEL) != 0); in check_prealloc()
35421 allocated = mas_allocated(&mas); in check_prealloc()
35422 height = mas_mt_height(&mas); in check_prealloc()
35425 mas_store_prealloc(&mas, ptr); in check_prealloc()
35427 MT_BUG_ON(mt, mas_preallocate(&mas, GFP_KERNEL) != 0); in check_prealloc()
35428 allocated = mas_allocated(&mas); in check_prealloc()
35429 height = mas_mt_height(&mas); in check_prealloc()
35432 mas_store_prealloc(&mas, ptr); in check_prealloc()
35433 MT_BUG_ON(mt, mas_allocated(&mas) != 0); in check_prealloc()
35435 MT_BUG_ON(mt, mas_preallocate(&mas, GFP_KERNEL & GFP_NOWAIT) == 0); in check_prealloc()
35436 allocated = mas_allocated(&mas); in check_prealloc()
35437 height = mas_mt_height(&mas); in check_prealloc()
35439 mas_destroy(&mas); in check_prealloc()
35442 MT_BUG_ON(mt, mas_preallocate(&mas, GFP_KERNEL) != 0); in check_prealloc()
35443 allocated = mas_allocated(&mas); in check_prealloc()
35444 height = mas_mt_height(&mas); in check_prealloc()
35447 mas_store_prealloc(&mas, ptr); in check_prealloc()
35448 MT_BUG_ON(mt, mas_allocated(&mas) != 0); in check_prealloc()
35450 MT_BUG_ON(mt, mas_preallocate(&mas, GFP_KERNEL & GFP_NOWAIT) == 0); in check_prealloc()
35451 allocated = mas_allocated(&mas); in check_prealloc()
35452 height = mas_mt_height(&mas); in check_prealloc()
35461 MA_STATE(mas, mt, 1200, 2380); in check_spanning_write()
35467 mas_store_gfp(&mas, NULL, GFP_KERNEL); in check_spanning_write()
35468 mas_set(&mas, 1205); in check_spanning_write()
35469 MT_BUG_ON(mt, mas_walk(&mas) != NULL); in check_spanning_write()
35477 mas_set_range(&mas, 9, 50006); /* Will expand to 0 - ULONG_MAX */ in check_spanning_write()
35478 mas_store_gfp(&mas, NULL, GFP_KERNEL); in check_spanning_write()
35479 mas_set(&mas, 1205); in check_spanning_write()
35480 MT_BUG_ON(mt, mas_walk(&mas) != NULL); in check_spanning_write()
35490 mas_set_range(&mas, 0, 12900); /* Spans more than 2 levels */ in check_spanning_write()
35492 mas_store_gfp(&mas, NULL, GFP_KERNEL); in check_spanning_write()
35493 mas_set(&mas, 1205); in check_spanning_write()
35494 MT_BUG_ON(mt, mas_walk(&mas) != NULL); in check_spanning_write()
35503 mas_set_range(&mas, 0, 300); in check_spanning_write()
35505 mas_store_gfp(&mas, NULL, GFP_KERNEL); in check_spanning_write()
35506 mas_set(&mas, 15); in check_spanning_write()
35507 MT_BUG_ON(mt, mas_walk(&mas) != NULL); in check_spanning_write()
35516 mas_set_range(&mas, 0, 12865); in check_spanning_write()
35518 mas_store_gfp(&mas, NULL, GFP_KERNEL); in check_spanning_write()
35519 mas_set(&mas, 15); in check_spanning_write()
35520 MT_BUG_ON(mt, mas_walk(&mas) != NULL); in check_spanning_write()
35529 mas_set_range(&mas, 90, 13665); in check_spanning_write()
35531 mas_store_gfp(&mas, NULL, GFP_KERNEL); in check_spanning_write()
35532 mas_set(&mas, 95); in check_spanning_write()
35533 MT_BUG_ON(mt, mas_walk(&mas) != NULL); in check_spanning_write()
35542 mas_set_range(&mas, 46805, 49995); in check_spanning_write()
35544 mas_store_gfp(&mas, NULL, GFP_KERNEL); in check_spanning_write()
35545 mas_set(&mas, 46815); in check_spanning_write()
35546 MT_BUG_ON(mt, mas_walk(&mas) != NULL); in check_spanning_write()
35558 mas_set_range(&mas, 32395, 49995); in check_spanning_write()
35560 mas_store_gfp(&mas, NULL, GFP_KERNEL); in check_spanning_write()
35561 mas_set(&mas, 46815); in check_spanning_write()
35562 MT_BUG_ON(mt, mas_walk(&mas) != NULL); in check_spanning_write()
35573 mas_set_range(&mas, 38875, 43190); in check_spanning_write()
35575 mas_store_gfp(&mas, NULL, GFP_KERNEL); in check_spanning_write()
35576 mas_set(&mas, 38900); in check_spanning_write()
35577 MT_BUG_ON(mt, mas_walk(&mas) != NULL); in check_spanning_write()
35586 mas_set(&mas, 47606); in check_spanning_write()
35587 mas_store_gfp(&mas, check_spanning_write, GFP_KERNEL); in check_spanning_write()
35588 mas_set(&mas, 47607); in check_spanning_write()
35589 mas_store_gfp(&mas, check_spanning_write, GFP_KERNEL); in check_spanning_write()
35590 mas_set(&mas, 47608); in check_spanning_write()
35591 mas_store_gfp(&mas, check_spanning_write, GFP_KERNEL); in check_spanning_write()
35592 mas_set(&mas, 47609); in check_spanning_write()
35593 mas_store_gfp(&mas, check_spanning_write, GFP_KERNEL); in check_spanning_write()
35595 mas_ascend(&mas); in check_spanning_write()
35596 MT_BUG_ON(mt, (mas_data_end(&mas)) != mt_slot_count(mas.node) - 1); in check_spanning_write()
35597 mas_set_range(&mas, 11516, 48940); in check_spanning_write()
35598 mas_store_gfp(&mas, NULL, GFP_KERNEL); in check_spanning_write()
35606 mas_set_range(&mas, 43200, 49999); in check_spanning_write()
35608 mas_store_gfp(&mas, NULL, GFP_KERNEL); in check_spanning_write()
35609 mas_set(&mas, 43200); in check_spanning_write()
35610 MT_BUG_ON(mt, mas_walk(&mas) != NULL); in check_spanning_write()
35619 mas_set_range(&mas, 76, 875); in check_spanning_write()
35620 mas_store_gfp(&mas, NULL, GFP_KERNEL); in check_spanning_write()
35630 MA_STATE(mas, mt, 959, 959); in check_null_expand()
35635 mas_lock(&mas); in check_null_expand()
35636 mas_walk(&mas); in check_null_expand()
35637 data_end = mas_data_end(&mas); in check_null_expand()
35638 mas_set_range(&mas, 959, 963); in check_null_expand()
35639 mas_store_gfp(&mas, NULL, GFP_KERNEL); in check_null_expand()
35641 MT_BUG_ON(mt, data_end != mas_data_end(&mas)); in check_null_expand()
35644 mas_set(&mas, 880); in check_null_expand()
35645 mas_walk(&mas); in check_null_expand()
35646 data_end = mas_data_end(&mas); in check_null_expand()
35647 mas_set_range(&mas, 884, 887); in check_null_expand()
35648 mas_store_gfp(&mas, NULL, GFP_KERNEL); in check_null_expand()
35652 MT_BUG_ON(mt, data_end != mas_data_end(&mas)); in check_null_expand()
35656 mas_set(&mas, 890); in check_null_expand()
35657 mas_walk(&mas); in check_null_expand()
35658 data_end = mas_data_end(&mas); in check_null_expand()
35659 mas_set_range(&mas, 900, 905); in check_null_expand()
35660 mas_store_gfp(&mas, NULL, GFP_KERNEL); in check_null_expand()
35666 MT_BUG_ON(mt, data_end - 2 != mas_data_end(&mas)); in check_null_expand()
35670 mas_set(&mas, 800); in check_null_expand()
35671 mas_walk(&mas); in check_null_expand()
35672 data_end = mas_data_end(&mas); in check_null_expand()
35673 mas_set_range(&mas, 810, 825); in check_null_expand()
35674 mas_store_gfp(&mas, NULL, GFP_KERNEL); in check_null_expand()
35680 MT_BUG_ON(mt, data_end - 4 != mas_data_end(&mas)); in check_null_expand()
35682 mas_unlock(&mas); in check_null_expand()