]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
radix tree tests: Convert item_kill_tree to XArray
authorMatthew Wilcox <willy@infradead.org>
Thu, 13 Sep 2018 14:15:41 +0000 (10:15 -0400)
committerMatthew Wilcox <willy@infradead.org>
Sun, 21 Oct 2018 14:46:47 +0000 (10:46 -0400)
In preparation for the removal of the multiorder radix tree code,
convert item_kill_tree() to use the XArray so it can still be called
for XArrays containing multi-index entries.

Signed-off-by: Matthew Wilcox <willy@infradead.org>
tools/testing/radix-tree/test.c

index 5376b8c5d8d6459278cf89df889e57f86ef925ae..19045ce3bd237d665db6ca2c1335d641a5547d8e 100644 (file)
@@ -252,31 +252,19 @@ void verify_tag_consistency(struct radix_tree_root *root, unsigned int tag)
        verify_node(node, tag, !!root_tag_get(root, tag));
 }
 
-void item_kill_tree(struct radix_tree_root *root)
+void item_kill_tree(struct xarray *xa)
 {
-       struct radix_tree_iter iter;
-       void **slot;
-       struct item *items[32];
-       int nfound;
-
-       radix_tree_for_each_slot(slot, root, &iter, 0) {
-               if (xa_is_value(*slot))
-                       radix_tree_delete(root, iter.index);
-       }
-
-       while ((nfound = radix_tree_gang_lookup(root, (void **)items, 0, 32))) {
-               int i;
-
-               for (i = 0; i < nfound; i++) {
-                       void *ret;
+       XA_STATE(xas, xa, 0);
+       void *entry;
 
-                       ret = radix_tree_delete(root, items[i]->index);
-                       assert(ret == items[i]);
-                       free(items[i]);
+       xas_for_each(&xas, entry, ULONG_MAX) {
+               if (!xa_is_value(entry)) {
+                       item_free(entry, xas.xa_index);
                }
+               xas_store(&xas, NULL);
        }
-       assert(radix_tree_gang_lookup(root, (void **)items, 0, 32) == 0);
-       assert(root->xa_head == NULL);
+
+       assert(xa_empty(xa));
 }
 
 void tree_verify_min_height(struct radix_tree_root *root, int maxindex)