Commit ccc89e30 authored by Matthew Wilcox's avatar Matthew Wilcox

radix tree tests: Convert item_kill_tree to XArray

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: default avatarMatthew Wilcox <willy@infradead.org>
parent 4bb53bdd
...@@ -252,31 +252,19 @@ void verify_tag_consistency(struct radix_tree_root *root, unsigned int tag) ...@@ -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)); 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; XA_STATE(xas, xa, 0);
void **slot; void *entry;
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;
ret = radix_tree_delete(root, items[i]->index); xas_for_each(&xas, entry, ULONG_MAX) {
assert(ret == items[i]); if (!xa_is_value(entry)) {
free(items[i]); 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) void tree_verify_min_height(struct radix_tree_root *root, int maxindex)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment