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: Matthew Wilcox <willy@infradead.org>
This commit is contained in:
@@ -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) {
|
xas_for_each(&xas, entry, ULONG_MAX) {
|
||||||
if (xa_is_value(*slot))
|
if (!xa_is_value(entry)) {
|
||||||
radix_tree_delete(root, iter.index);
|
item_free(entry, xas.xa_index);
|
||||||
|
}
|
||||||
|
xas_store(&xas, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
while ((nfound = radix_tree_gang_lookup(root, (void **)items, 0, 32))) {
|
assert(xa_empty(xa));
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i = 0; i < nfound; i++) {
|
|
||||||
void *ret;
|
|
||||||
|
|
||||||
ret = radix_tree_delete(root, items[i]->index);
|
|
||||||
assert(ret == items[i]);
|
|
||||||
free(items[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
assert(radix_tree_gang_lookup(root, (void **)items, 0, 32) == 0);
|
|
||||||
assert(root->xa_head == NULL);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void tree_verify_min_height(struct radix_tree_root *root, int maxindex)
|
void tree_verify_min_height(struct radix_tree_root *root, int maxindex)
|
||||||
|
|||||||
Reference in New Issue
Block a user