Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4bb53bdd authored by Matthew Wilcox's avatar Matthew Wilcox
Browse files

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: default avatarMatthew Wilcox <willy@infradead.org>
parent 879a9ae7
Loading
Loading
Loading
Loading
+19 −0
Original line number Diff line number Diff line
@@ -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);
+3 −9
Original line number Diff line number Diff line
@@ -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;
+0 −2
Original line number Diff line number Diff line
@@ -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);