diff options
-rw-r--r-- | tools/testing/radix-tree/test.c | 30 |
1 files changed, 9 insertions, 21 deletions
diff --git a/tools/testing/radix-tree/test.c b/tools/testing/radix-tree/test.c index 5376b8c5d8d6..19045ce3bd23 100644 --- a/tools/testing/radix-tree/test.c +++ b/tools/testing/radix-tree/test.c | |||
@@ -252,31 +252,19 @@ void verify_tag_consistency(struct radix_tree_root *root, unsigned int tag) | |||
252 | verify_node(node, tag, !!root_tag_get(root, tag)); | 252 | verify_node(node, tag, !!root_tag_get(root, tag)); |
253 | } | 253 | } |
254 | 254 | ||
255 | void item_kill_tree(struct radix_tree_root *root) | 255 | void item_kill_tree(struct xarray *xa) |
256 | { | 256 | { |
257 | struct radix_tree_iter iter; | 257 | XA_STATE(xas, xa, 0); |
258 | void **slot; | 258 | void *entry; |
259 | struct item *items[32]; | ||
260 | int nfound; | ||
261 | |||
262 | radix_tree_for_each_slot(slot, root, &iter, 0) { | ||
263 | if (xa_is_value(*slot)) | ||
264 | radix_tree_delete(root, iter.index); | ||
265 | } | ||
266 | |||
267 | while ((nfound = radix_tree_gang_lookup(root, (void **)items, 0, 32))) { | ||
268 | int i; | ||
269 | |||
270 | for (i = 0; i < nfound; i++) { | ||
271 | void *ret; | ||
272 | 259 | ||
273 | ret = radix_tree_delete(root, items[i]->index); | 260 | xas_for_each(&xas, entry, ULONG_MAX) { |
274 | assert(ret == items[i]); | 261 | if (!xa_is_value(entry)) { |
275 | free(items[i]); | 262 | item_free(entry, xas.xa_index); |
276 | } | 263 | } |
264 | xas_store(&xas, NULL); | ||
277 | } | 265 | } |
278 | assert(radix_tree_gang_lookup(root, (void **)items, 0, 32) == 0); | 266 | |
279 | assert(root->xa_head == NULL); | 267 | assert(xa_empty(xa)); |
280 | } | 268 | } |
281 | 269 | ||
282 | void tree_verify_min_height(struct radix_tree_root *root, int maxindex) | 270 | void tree_verify_min_height(struct radix_tree_root *root, int maxindex) |