From 4bb53bdda0d1e061035774ed4868bdeb4d889044 Mon Sep 17 00:00:00 2001 From: Matthew Wilcox Date: Wed, 12 Sep 2018 23:29:32 -0400 Subject: radix tree tests: Move item_insert_order The remaining tests are not suitable for moving in-kernel, so move item_insert_order() into multiorder.c, make it static and make it use the XArray. Signed-off-by: Matthew Wilcox --- tools/testing/radix-tree/multiorder.c | 19 +++++++++++++++++++ tools/testing/radix-tree/test.c | 12 +++--------- tools/testing/radix-tree/test.h | 2 -- 3 files changed, 22 insertions(+), 11 deletions(-) (limited to 'tools') diff --git a/tools/testing/radix-tree/multiorder.c b/tools/testing/radix-tree/multiorder.c index 6e8d66c2aa89..8c41dca272b1 100644 --- a/tools/testing/radix-tree/multiorder.c +++ b/tools/testing/radix-tree/multiorder.c @@ -20,6 +20,25 @@ #include "test.h" +static int item_insert_order(struct xarray *xa, unsigned long index, + unsigned order) +{ + XA_STATE_ORDER(xas, xa, index, order); + struct item *item = item_create(index, order); + + do { + xas_lock(&xas); + xas_store(&xas, item); + xas_unlock(&xas); + } while (xas_nomem(&xas, GFP_KERNEL)); + + if (!xas_error(&xas)) + return 0; + + free(item); + return xas_error(&xas); +} + void multiorder_iteration(void) { RADIX_TREE(tree, GFP_KERNEL); diff --git a/tools/testing/radix-tree/test.c b/tools/testing/radix-tree/test.c index 5991cfd34f2b..5376b8c5d8d6 100644 --- a/tools/testing/radix-tree/test.c +++ b/tools/testing/radix-tree/test.c @@ -34,21 +34,15 @@ struct item *item_create(unsigned long index, unsigned int order) return ret; } -int item_insert_order(struct radix_tree_root *root, unsigned long index, - unsigned order) +int item_insert(struct radix_tree_root *root, unsigned long index) { - struct item *item = item_create(index, order); - int err = __radix_tree_insert(root, item->index, item->order, item); + struct item *item = item_create(index, 0); + int err = radix_tree_insert(root, item->index, item); if (err) free(item); return err; } -int item_insert(struct radix_tree_root *root, unsigned long index) -{ - return item_insert_order(root, index, 0); -} - void item_sanity(struct item *item, unsigned long index) { unsigned long mask; diff --git a/tools/testing/radix-tree/test.h b/tools/testing/radix-tree/test.h index 28961a08828e..e259c0839d5d 100644 --- a/tools/testing/radix-tree/test.h +++ b/tools/testing/radix-tree/test.h @@ -14,8 +14,6 @@ struct item *item_create(unsigned long index, unsigned int order); int item_insert(struct radix_tree_root *root, unsigned long index); void item_sanity(struct item *item, unsigned long index); void item_free(struct item *item, unsigned long index); -int item_insert_order(struct radix_tree_root *root, unsigned long index, - unsigned order); int item_delete(struct radix_tree_root *root, unsigned long index); int item_delete_rcu(struct radix_tree_root *root, unsigned long index); struct item *item_lookup(struct radix_tree_root *root, unsigned long index); -- cgit v1.2.3-59-g8ed1b