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

Commit 101d9607 authored by Matthew Wilcox's avatar Matthew Wilcox Committed by Linus Torvalds
Browse files

radix tree test suite: record order in each item

This probably doubles the size of each item allocated by the test suite
but it lets us check a few more things, and may be needed for upcoming
API changes that require the caller pass in the order of the entry.

Link: http://lkml.kernel.org/r/1480369871-5271-46-git-send-email-mawilcox@linuxonhyperv.com


Signed-off-by: default avatarMatthew Wilcox <mawilcox@microsoft.com>
Tested-by: default avatarKirill A. Shutemov <kirill.shutemov@linux.intel.com>
Cc: Konstantin Khlebnikov <koct9i@gmail.com>
Cc: Ross Zwisler <ross.zwisler@linux.intel.com>
Cc: Matthew Wilcox <mawilcox@microsoft.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 3ad75f8a
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -125,7 +125,7 @@ static void multiorder_check(unsigned long index, int order)
	unsigned long min = index & ~((1UL << order) - 1);
	unsigned long max = min + (1UL << order);
	void **slot;
	struct item *item2 = item_create(min);
	struct item *item2 = item_create(min, order);
	RADIX_TREE(tree, GFP_KERNEL);

	printf("Multiorder index %ld, order %d\n", index, order);
+19 −10
Original line number Diff line number Diff line
@@ -24,21 +24,29 @@ int item_tag_get(struct radix_tree_root *root, unsigned long index, int tag)
	return radix_tree_tag_get(root, index, tag);
}

int __item_insert(struct radix_tree_root *root, struct item *item,
			unsigned order)
int __item_insert(struct radix_tree_root *root, struct item *item)
{
	return __radix_tree_insert(root, item->index, order, item);
	return __radix_tree_insert(root, item->index, item->order, item);
}

int item_insert(struct radix_tree_root *root, unsigned long index)
{
	return __item_insert(root, item_create(index), 0);
	return __item_insert(root, item_create(index, 0));
}

int item_insert_order(struct radix_tree_root *root, unsigned long index,
			unsigned order)
{
	return __item_insert(root, item_create(index), order);
	return __item_insert(root, item_create(index, order));
}

void item_sanity(struct item *item, unsigned long index)
{
	unsigned long mask;
	assert(!radix_tree_is_internal_node(item));
	assert(item->order < BITS_PER_LONG);
	mask = (1UL << item->order) - 1;
	assert((item->index | mask) == (index | mask));
}

int item_delete(struct radix_tree_root *root, unsigned long index)
@@ -46,18 +54,19 @@ int item_delete(struct radix_tree_root *root, unsigned long index)
	struct item *item = radix_tree_delete(root, index);

	if (item) {
		assert(item->index == index);
		item_sanity(item, index);
		free(item);
		return 1;
	}
	return 0;
}

struct item *item_create(unsigned long index)
struct item *item_create(unsigned long index, unsigned int order)
{
	struct item *ret = malloc(sizeof(*ret));

	ret->index = index;
	ret->order = order;
	return ret;
}

@@ -66,8 +75,8 @@ void item_check_present(struct radix_tree_root *root, unsigned long index)
	struct item *item;

	item = radix_tree_lookup(root, index);
	assert(item != 0);
	assert(item->index == index);
	assert(item != NULL);
	item_sanity(item, index);
}

struct item *item_lookup(struct radix_tree_root *root, unsigned long index)
@@ -80,7 +89,7 @@ void item_check_absent(struct radix_tree_root *root, unsigned long index)
	struct item *item;

	item = radix_tree_lookup(root, index);
	assert(item == 0);
	assert(item == NULL);
}

/*
+3 −3
Original line number Diff line number Diff line
@@ -5,11 +5,11 @@

struct item {
	unsigned long index;
	unsigned int order;
};

struct item *item_create(unsigned long index);
int __item_insert(struct radix_tree_root *root, struct item *item,
			unsigned order);
struct item *item_create(unsigned long index, unsigned int order);
int __item_insert(struct radix_tree_root *root, struct item *item);
int item_insert(struct radix_tree_root *root, unsigned long index);
int item_insert_order(struct radix_tree_root *root, unsigned long index,
			unsigned order);