Skip to content

Commit 161b47e

Browse files
author
Matthew Wilcox
committed
test_ida: Move ida_check_max
Convert to new API and move to kernel space. Signed-off-by: Matthew Wilcox <willy@infradead.org>
1 parent 0a38563 commit 161b47e

File tree

2 files changed

+23
-28
lines changed

2 files changed

+23
-28
lines changed

lib/test_ida.c

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,28 @@ static void ida_check_leaf(struct ida *ida, unsigned int base)
4747
IDA_BUG_ON(ida, !ida_is_empty(ida));
4848
}
4949

50+
/*
51+
* Check allocations up to and slightly above the maximum allowed (2^31-1) ID.
52+
* Allocating up to 2^31-1 should succeed, and then allocating the next one
53+
* should fail.
54+
*/
55+
static void ida_check_max(struct ida *ida)
56+
{
57+
unsigned long i, j;
58+
59+
for (j = 1; j < 65537; j *= 2) {
60+
unsigned long base = (1UL << 31) - j;
61+
for (i = 0; i < j; i++) {
62+
IDA_BUG_ON(ida, ida_alloc_min(ida, base, GFP_KERNEL) !=
63+
base + i);
64+
}
65+
IDA_BUG_ON(ida, ida_alloc_min(ida, base, GFP_KERNEL) !=
66+
-ENOSPC);
67+
ida_destroy(ida);
68+
IDA_BUG_ON(ida, !ida_is_empty(ida));
69+
}
70+
}
71+
5072
static int ida_checks(void)
5173
{
5274
DEFINE_IDA(ida);
@@ -55,6 +77,7 @@ static int ida_checks(void)
5577
ida_check_leaf(&ida, 0);
5678
ida_check_leaf(&ida, 1024);
5779
ida_check_leaf(&ida, 1024 * 64);
80+
ida_check_max(&ida);
5881

5982
printk("IDA: %u of %u tests passed\n", tests_passed, tests_run);
6083
return (tests_run != tests_passed) ? 0 : -EINVAL;

tools/testing/radix-tree/idr-test.c

Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -396,33 +396,6 @@ void ida_check_conv(void)
396396
ida_destroy(&ida);
397397
}
398398

399-
/*
400-
* Check allocations up to and slightly above the maximum allowed (2^31-1) ID.
401-
* Allocating up to 2^31-1 should succeed, and then allocating the next one
402-
* should fail.
403-
*/
404-
void ida_check_max(void)
405-
{
406-
DEFINE_IDA(ida);
407-
int id, err;
408-
unsigned long i, j;
409-
410-
for (j = 1; j < 65537; j *= 2) {
411-
unsigned long base = (1UL << 31) - j;
412-
for (i = 0; i < j; i++) {
413-
assert(ida_pre_get(&ida, GFP_KERNEL));
414-
assert(!ida_get_new_above(&ida, base, &id));
415-
assert(id == base + i);
416-
}
417-
assert(ida_pre_get(&ida, GFP_KERNEL));
418-
err = ida_get_new_above(&ida, base, &id);
419-
assert(err == -ENOSPC);
420-
ida_destroy(&ida);
421-
assert(ida_is_empty(&ida));
422-
rcu_barrier();
423-
}
424-
}
425-
426399
void ida_check_random(void)
427400
{
428401
DEFINE_IDA(ida);
@@ -534,7 +507,6 @@ void user_ida_checks(void)
534507
ida_destroy(&ida);
535508
assert(ida_is_empty(&ida));
536509

537-
ida_check_max();
538510
ida_check_conv();
539511
ida_check_random();
540512
ida_simple_get_remove_test();

0 commit comments

Comments
 (0)