Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

test_ida: Move ida_check_max

Convert to new API and move to kernel space.

Signed-off-by: Matthew Wilcox <willy@infradead.org>

+23 -28
+23
lib/test_ida.c
··· 47 47 IDA_BUG_ON(ida, !ida_is_empty(ida)); 48 48 } 49 49 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 + 50 72 static int ida_checks(void) 51 73 { 52 74 DEFINE_IDA(ida); ··· 77 55 ida_check_leaf(&ida, 0); 78 56 ida_check_leaf(&ida, 1024); 79 57 ida_check_leaf(&ida, 1024 * 64); 58 + ida_check_max(&ida); 80 59 81 60 printk("IDA: %u of %u tests passed\n", tests_passed, tests_run); 82 61 return (tests_run != tests_passed) ? 0 : -EINVAL;
-28
tools/testing/radix-tree/idr-test.c
··· 396 396 ida_destroy(&ida); 397 397 } 398 398 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 - 426 399 void ida_check_random(void) 427 400 { 428 401 DEFINE_IDA(ida); ··· 507 534 ida_destroy(&ida); 508 535 assert(ida_is_empty(&ida)); 509 536 510 - ida_check_max(); 511 537 ida_check_conv(); 512 538 ida_check_random(); 513 539 ida_simple_get_remove_test();