xarray: Define struct xa_node
This is a direct replacement for struct radix_tree_node. A couple of struct members have changed name, so convert those. Use a #define so that radix tree users continue to work without change. Signed-off-by: Matthew Wilcox <willy@infradead.org> Reviewed-by: Josef Bacik <jbacik@fb.com>
This commit is contained in:
@@ -393,7 +393,7 @@ static void multiorder_join2(unsigned order1, unsigned order2)
|
||||
radix_tree_insert(&tree, 1 << order2, xa_mk_value(5));
|
||||
item2 = __radix_tree_lookup(&tree, 1 << order2, &node, NULL);
|
||||
assert(item2 == xa_mk_value(5));
|
||||
assert(node->exceptional == 1);
|
||||
assert(node->nr_values == 1);
|
||||
|
||||
item2 = radix_tree_lookup(&tree, 0);
|
||||
free(item2);
|
||||
@@ -401,7 +401,7 @@ static void multiorder_join2(unsigned order1, unsigned order2)
|
||||
radix_tree_join(&tree, 0, order1, item1);
|
||||
item2 = __radix_tree_lookup(&tree, 1 << order2, &node, NULL);
|
||||
assert(item2 == item1);
|
||||
assert(node->exceptional == 0);
|
||||
assert(node->nr_values == 0);
|
||||
item_kill_tree(&tree);
|
||||
}
|
||||
|
||||
@@ -409,7 +409,7 @@ static void multiorder_join2(unsigned order1, unsigned order2)
|
||||
* This test revealed an accounting bug for value entries at one point.
|
||||
* Nodes were being freed back into the pool with an elevated exception count
|
||||
* by radix_tree_join() and then radix_tree_split() was failing to zero the
|
||||
* count of exceptional entries.
|
||||
* count of value entries.
|
||||
*/
|
||||
static void multiorder_join3(unsigned int order)
|
||||
{
|
||||
@@ -433,7 +433,7 @@ static void multiorder_join3(unsigned int order)
|
||||
}
|
||||
|
||||
__radix_tree_lookup(&tree, 0, &node, NULL);
|
||||
assert(node->exceptional == node->count);
|
||||
assert(node->nr_values == node->count);
|
||||
|
||||
item_kill_tree(&tree);
|
||||
}
|
||||
@@ -520,7 +520,7 @@ static void __multiorder_split2(int old_order, int new_order)
|
||||
|
||||
item = __radix_tree_lookup(&tree, 0, &node, NULL);
|
||||
assert(item == xa_mk_value(5));
|
||||
assert(node->exceptional > 0);
|
||||
assert(node->nr_values > 0);
|
||||
|
||||
radix_tree_split(&tree, 0, new_order);
|
||||
radix_tree_for_each_slot(slot, &tree, &iter, 0) {
|
||||
@@ -530,7 +530,7 @@ static void __multiorder_split2(int old_order, int new_order)
|
||||
|
||||
item = __radix_tree_lookup(&tree, 0, &node, NULL);
|
||||
assert(item != xa_mk_value(5));
|
||||
assert(node->exceptional == 0);
|
||||
assert(node->nr_values == 0);
|
||||
|
||||
item_kill_tree(&tree);
|
||||
}
|
||||
@@ -547,7 +547,7 @@ static void __multiorder_split3(int old_order, int new_order)
|
||||
|
||||
item = __radix_tree_lookup(&tree, 0, &node, NULL);
|
||||
assert(item == xa_mk_value(5));
|
||||
assert(node->exceptional > 0);
|
||||
assert(node->nr_values > 0);
|
||||
|
||||
radix_tree_split(&tree, 0, new_order);
|
||||
radix_tree_for_each_slot(slot, &tree, &iter, 0) {
|
||||
@@ -556,7 +556,7 @@ static void __multiorder_split3(int old_order, int new_order)
|
||||
|
||||
item = __radix_tree_lookup(&tree, 0, &node, NULL);
|
||||
assert(item == xa_mk_value(7));
|
||||
assert(node->exceptional > 0);
|
||||
assert(node->nr_values > 0);
|
||||
|
||||
item_kill_tree(&tree);
|
||||
|
||||
@@ -564,7 +564,7 @@ static void __multiorder_split3(int old_order, int new_order)
|
||||
|
||||
item = __radix_tree_lookup(&tree, 0, &node, NULL);
|
||||
assert(item == xa_mk_value(5));
|
||||
assert(node->exceptional > 0);
|
||||
assert(node->nr_values > 0);
|
||||
|
||||
radix_tree_split(&tree, 0, new_order);
|
||||
radix_tree_for_each_slot(slot, &tree, &iter, 0) {
|
||||
@@ -577,13 +577,13 @@ static void __multiorder_split3(int old_order, int new_order)
|
||||
|
||||
item = __radix_tree_lookup(&tree, 1 << new_order, &node, NULL);
|
||||
assert(item == xa_mk_value(7));
|
||||
assert(node->count == node->exceptional);
|
||||
assert(node->count == node->nr_values);
|
||||
do {
|
||||
node = node->parent;
|
||||
if (!node)
|
||||
break;
|
||||
assert(node->count == 1);
|
||||
assert(node->exceptional == 0);
|
||||
assert(node->nr_values == 0);
|
||||
} while (1);
|
||||
|
||||
item_kill_tree(&tree);
|
||||
@@ -611,15 +611,15 @@ static void multiorder_account(void)
|
||||
|
||||
__radix_tree_insert(&tree, 1 << 5, 5, xa_mk_value(5));
|
||||
__radix_tree_lookup(&tree, 0, &node, NULL);
|
||||
assert(node->count == node->exceptional * 2);
|
||||
assert(node->count == node->nr_values * 2);
|
||||
radix_tree_delete(&tree, 1 << 5);
|
||||
assert(node->exceptional == 0);
|
||||
assert(node->nr_values == 0);
|
||||
|
||||
__radix_tree_insert(&tree, 1 << 5, 5, xa_mk_value(5));
|
||||
__radix_tree_lookup(&tree, 1 << 5, &node, &slot);
|
||||
assert(node->count == node->exceptional * 2);
|
||||
assert(node->count == node->nr_values * 2);
|
||||
__radix_tree_replace(&tree, node, slot, NULL, NULL);
|
||||
assert(node->exceptional == 0);
|
||||
assert(node->nr_values == 0);
|
||||
|
||||
item_kill_tree(&tree);
|
||||
}
|
||||
|
Reference in New Issue
Block a user