diff options
Diffstat (limited to 'lib/test_xarray.c')
-rw-r--r-- | lib/test_xarray.c | 155 |
1 files changed, 112 insertions, 43 deletions
diff --git a/lib/test_xarray.c b/lib/test_xarray.c index 0598e86af8fc..4676c0a1eeca 100644 --- a/lib/test_xarray.c +++ b/lib/test_xarray.c | |||
@@ -28,23 +28,28 @@ void xa_dump(const struct xarray *xa) { } | |||
28 | } while (0) | 28 | } while (0) |
29 | #endif | 29 | #endif |
30 | 30 | ||
31 | static void *xa_mk_index(unsigned long index) | ||
32 | { | ||
33 | return xa_mk_value(index & LONG_MAX); | ||
34 | } | ||
35 | |||
31 | static void *xa_store_index(struct xarray *xa, unsigned long index, gfp_t gfp) | 36 | static void *xa_store_index(struct xarray *xa, unsigned long index, gfp_t gfp) |
32 | { | 37 | { |
33 | return xa_store(xa, index, xa_mk_value(index & LONG_MAX), gfp); | 38 | return xa_store(xa, index, xa_mk_index(index), gfp); |
34 | } | 39 | } |
35 | 40 | ||
36 | static void xa_alloc_index(struct xarray *xa, unsigned long index, gfp_t gfp) | 41 | static void xa_alloc_index(struct xarray *xa, unsigned long index, gfp_t gfp) |
37 | { | 42 | { |
38 | u32 id = 0; | 43 | u32 id = 0; |
39 | 44 | ||
40 | XA_BUG_ON(xa, xa_alloc(xa, &id, UINT_MAX, xa_mk_value(index & LONG_MAX), | 45 | XA_BUG_ON(xa, xa_alloc(xa, &id, UINT_MAX, xa_mk_index(index), |
41 | gfp) != 0); | 46 | gfp) != 0); |
42 | XA_BUG_ON(xa, id != index); | 47 | XA_BUG_ON(xa, id != index); |
43 | } | 48 | } |
44 | 49 | ||
45 | static void xa_erase_index(struct xarray *xa, unsigned long index) | 50 | static void xa_erase_index(struct xarray *xa, unsigned long index) |
46 | { | 51 | { |
47 | XA_BUG_ON(xa, xa_erase(xa, index) != xa_mk_value(index & LONG_MAX)); | 52 | XA_BUG_ON(xa, xa_erase(xa, index) != xa_mk_index(index)); |
48 | XA_BUG_ON(xa, xa_load(xa, index) != NULL); | 53 | XA_BUG_ON(xa, xa_load(xa, index) != NULL); |
49 | } | 54 | } |
50 | 55 | ||
@@ -118,7 +123,7 @@ static noinline void check_xas_retry(struct xarray *xa) | |||
118 | 123 | ||
119 | xas_set(&xas, 0); | 124 | xas_set(&xas, 0); |
120 | xas_for_each(&xas, entry, ULONG_MAX) { | 125 | xas_for_each(&xas, entry, ULONG_MAX) { |
121 | xas_store(&xas, xa_mk_value(xas.xa_index)); | 126 | xas_store(&xas, xa_mk_index(xas.xa_index)); |
122 | } | 127 | } |
123 | xas_unlock(&xas); | 128 | xas_unlock(&xas); |
124 | 129 | ||
@@ -196,7 +201,7 @@ static noinline void check_xa_mark_1(struct xarray *xa, unsigned long index) | |||
196 | XA_BUG_ON(xa, xa_store_index(xa, index + 2, GFP_KERNEL)); | 201 | XA_BUG_ON(xa, xa_store_index(xa, index + 2, GFP_KERNEL)); |
197 | xa_set_mark(xa, index + 2, XA_MARK_1); | 202 | xa_set_mark(xa, index + 2, XA_MARK_1); |
198 | XA_BUG_ON(xa, xa_store_index(xa, next, GFP_KERNEL)); | 203 | XA_BUG_ON(xa, xa_store_index(xa, next, GFP_KERNEL)); |
199 | xa_store_order(xa, index, order, xa_mk_value(index), | 204 | xa_store_order(xa, index, order, xa_mk_index(index), |
200 | GFP_KERNEL); | 205 | GFP_KERNEL); |
201 | for (i = base; i < next; i++) { | 206 | for (i = base; i < next; i++) { |
202 | XA_STATE(xas, xa, i); | 207 | XA_STATE(xas, xa, i); |
@@ -405,7 +410,7 @@ static noinline void check_xas_erase(struct xarray *xa) | |||
405 | xas_set(&xas, j); | 410 | xas_set(&xas, j); |
406 | do { | 411 | do { |
407 | xas_lock(&xas); | 412 | xas_lock(&xas); |
408 | xas_store(&xas, xa_mk_value(j)); | 413 | xas_store(&xas, xa_mk_index(j)); |
409 | xas_unlock(&xas); | 414 | xas_unlock(&xas); |
410 | } while (xas_nomem(&xas, GFP_KERNEL)); | 415 | } while (xas_nomem(&xas, GFP_KERNEL)); |
411 | } | 416 | } |
@@ -423,7 +428,7 @@ static noinline void check_xas_erase(struct xarray *xa) | |||
423 | xas_set(&xas, 0); | 428 | xas_set(&xas, 0); |
424 | j = i; | 429 | j = i; |
425 | xas_for_each(&xas, entry, ULONG_MAX) { | 430 | xas_for_each(&xas, entry, ULONG_MAX) { |
426 | XA_BUG_ON(xa, entry != xa_mk_value(j)); | 431 | XA_BUG_ON(xa, entry != xa_mk_index(j)); |
427 | xas_store(&xas, NULL); | 432 | xas_store(&xas, NULL); |
428 | j++; | 433 | j++; |
429 | } | 434 | } |
@@ -440,17 +445,17 @@ static noinline void check_multi_store_1(struct xarray *xa, unsigned long index, | |||
440 | unsigned long min = index & ~((1UL << order) - 1); | 445 | unsigned long min = index & ~((1UL << order) - 1); |
441 | unsigned long max = min + (1UL << order); | 446 | unsigned long max = min + (1UL << order); |
442 | 447 | ||
443 | xa_store_order(xa, index, order, xa_mk_value(index), GFP_KERNEL); | 448 | xa_store_order(xa, index, order, xa_mk_index(index), GFP_KERNEL); |
444 | XA_BUG_ON(xa, xa_load(xa, min) != xa_mk_value(index)); | 449 | XA_BUG_ON(xa, xa_load(xa, min) != xa_mk_index(index)); |
445 | XA_BUG_ON(xa, xa_load(xa, max - 1) != xa_mk_value(index)); | 450 | XA_BUG_ON(xa, xa_load(xa, max - 1) != xa_mk_index(index)); |
446 | XA_BUG_ON(xa, xa_load(xa, max) != NULL); | 451 | XA_BUG_ON(xa, xa_load(xa, max) != NULL); |
447 | XA_BUG_ON(xa, xa_load(xa, min - 1) != NULL); | 452 | XA_BUG_ON(xa, xa_load(xa, min - 1) != NULL); |
448 | 453 | ||
449 | xas_lock(&xas); | 454 | xas_lock(&xas); |
450 | XA_BUG_ON(xa, xas_store(&xas, xa_mk_value(min)) != xa_mk_value(index)); | 455 | XA_BUG_ON(xa, xas_store(&xas, xa_mk_index(min)) != xa_mk_index(index)); |
451 | xas_unlock(&xas); | 456 | xas_unlock(&xas); |
452 | XA_BUG_ON(xa, xa_load(xa, min) != xa_mk_value(min)); | 457 | XA_BUG_ON(xa, xa_load(xa, min) != xa_mk_index(min)); |
453 | XA_BUG_ON(xa, xa_load(xa, max - 1) != xa_mk_value(min)); | 458 | XA_BUG_ON(xa, xa_load(xa, max - 1) != xa_mk_index(min)); |
454 | XA_BUG_ON(xa, xa_load(xa, max) != NULL); | 459 | XA_BUG_ON(xa, xa_load(xa, max) != NULL); |
455 | XA_BUG_ON(xa, xa_load(xa, min - 1) != NULL); | 460 | XA_BUG_ON(xa, xa_load(xa, min - 1) != NULL); |
456 | 461 | ||
@@ -471,6 +476,32 @@ static noinline void check_multi_store_2(struct xarray *xa, unsigned long index, | |||
471 | xas_unlock(&xas); | 476 | xas_unlock(&xas); |
472 | XA_BUG_ON(xa, !xa_empty(xa)); | 477 | XA_BUG_ON(xa, !xa_empty(xa)); |
473 | } | 478 | } |
479 | |||
480 | static noinline void check_multi_store_3(struct xarray *xa, unsigned long index, | ||
481 | unsigned int order) | ||
482 | { | ||
483 | XA_STATE(xas, xa, 0); | ||
484 | void *entry; | ||
485 | int n = 0; | ||
486 | |||
487 | xa_store_order(xa, index, order, xa_mk_index(index), GFP_KERNEL); | ||
488 | |||
489 | xas_lock(&xas); | ||
490 | xas_for_each(&xas, entry, ULONG_MAX) { | ||
491 | XA_BUG_ON(xa, entry != xa_mk_index(index)); | ||
492 | n++; | ||
493 | } | ||
494 | XA_BUG_ON(xa, n != 1); | ||
495 | xas_set(&xas, index + 1); | ||
496 | xas_for_each(&xas, entry, ULONG_MAX) { | ||
497 | XA_BUG_ON(xa, entry != xa_mk_index(index)); | ||
498 | n++; | ||
499 | } | ||
500 | XA_BUG_ON(xa, n != 2); | ||
501 | xas_unlock(&xas); | ||
502 | |||
503 | xa_destroy(xa); | ||
504 | } | ||
474 | #endif | 505 | #endif |
475 | 506 | ||
476 | static noinline void check_multi_store(struct xarray *xa) | 507 | static noinline void check_multi_store(struct xarray *xa) |
@@ -523,15 +554,15 @@ static noinline void check_multi_store(struct xarray *xa) | |||
523 | 554 | ||
524 | for (i = 0; i < max_order; i++) { | 555 | for (i = 0; i < max_order; i++) { |
525 | for (j = 0; j < max_order; j++) { | 556 | for (j = 0; j < max_order; j++) { |
526 | xa_store_order(xa, 0, i, xa_mk_value(i), GFP_KERNEL); | 557 | xa_store_order(xa, 0, i, xa_mk_index(i), GFP_KERNEL); |
527 | xa_store_order(xa, 0, j, xa_mk_value(j), GFP_KERNEL); | 558 | xa_store_order(xa, 0, j, xa_mk_index(j), GFP_KERNEL); |
528 | 559 | ||
529 | for (k = 0; k < max_order; k++) { | 560 | for (k = 0; k < max_order; k++) { |
530 | void *entry = xa_load(xa, (1UL << k) - 1); | 561 | void *entry = xa_load(xa, (1UL << k) - 1); |
531 | if ((i < k) && (j < k)) | 562 | if ((i < k) && (j < k)) |
532 | XA_BUG_ON(xa, entry != NULL); | 563 | XA_BUG_ON(xa, entry != NULL); |
533 | else | 564 | else |
534 | XA_BUG_ON(xa, entry != xa_mk_value(j)); | 565 | XA_BUG_ON(xa, entry != xa_mk_index(j)); |
535 | } | 566 | } |
536 | 567 | ||
537 | xa_erase(xa, 0); | 568 | xa_erase(xa, 0); |
@@ -545,6 +576,11 @@ static noinline void check_multi_store(struct xarray *xa) | |||
545 | check_multi_store_1(xa, (1UL << i) + 1, i); | 576 | check_multi_store_1(xa, (1UL << i) + 1, i); |
546 | } | 577 | } |
547 | check_multi_store_2(xa, 4095, 9); | 578 | check_multi_store_2(xa, 4095, 9); |
579 | |||
580 | for (i = 1; i < 20; i++) { | ||
581 | check_multi_store_3(xa, 0, i); | ||
582 | check_multi_store_3(xa, 1UL << i, i); | ||
583 | } | ||
548 | #endif | 584 | #endif |
549 | } | 585 | } |
550 | 586 | ||
@@ -587,16 +623,25 @@ static noinline void check_xa_alloc(void) | |||
587 | xa_destroy(&xa0); | 623 | xa_destroy(&xa0); |
588 | 624 | ||
589 | id = 0xfffffffeU; | 625 | id = 0xfffffffeU; |
590 | XA_BUG_ON(&xa0, xa_alloc(&xa0, &id, UINT_MAX, xa_mk_value(0), | 626 | XA_BUG_ON(&xa0, xa_alloc(&xa0, &id, UINT_MAX, xa_mk_index(id), |
591 | GFP_KERNEL) != 0); | 627 | GFP_KERNEL) != 0); |
592 | XA_BUG_ON(&xa0, id != 0xfffffffeU); | 628 | XA_BUG_ON(&xa0, id != 0xfffffffeU); |
593 | XA_BUG_ON(&xa0, xa_alloc(&xa0, &id, UINT_MAX, xa_mk_value(0), | 629 | XA_BUG_ON(&xa0, xa_alloc(&xa0, &id, UINT_MAX, xa_mk_index(id), |
594 | GFP_KERNEL) != 0); | 630 | GFP_KERNEL) != 0); |
595 | XA_BUG_ON(&xa0, id != 0xffffffffU); | 631 | XA_BUG_ON(&xa0, id != 0xffffffffU); |
596 | XA_BUG_ON(&xa0, xa_alloc(&xa0, &id, UINT_MAX, xa_mk_value(0), | 632 | XA_BUG_ON(&xa0, xa_alloc(&xa0, &id, UINT_MAX, xa_mk_index(id), |
597 | GFP_KERNEL) != -ENOSPC); | 633 | GFP_KERNEL) != -ENOSPC); |
598 | XA_BUG_ON(&xa0, id != 0xffffffffU); | 634 | XA_BUG_ON(&xa0, id != 0xffffffffU); |
599 | xa_destroy(&xa0); | 635 | xa_destroy(&xa0); |
636 | |||
637 | id = 10; | ||
638 | XA_BUG_ON(&xa0, xa_alloc(&xa0, &id, 5, xa_mk_index(id), | ||
639 | GFP_KERNEL) != -ENOSPC); | ||
640 | XA_BUG_ON(&xa0, xa_store_index(&xa0, 3, GFP_KERNEL) != 0); | ||
641 | XA_BUG_ON(&xa0, xa_alloc(&xa0, &id, 5, xa_mk_index(id), | ||
642 | GFP_KERNEL) != -ENOSPC); | ||
643 | xa_erase_index(&xa0, 3); | ||
644 | XA_BUG_ON(&xa0, !xa_empty(&xa0)); | ||
600 | } | 645 | } |
601 | 646 | ||
602 | static noinline void __check_store_iter(struct xarray *xa, unsigned long start, | 647 | static noinline void __check_store_iter(struct xarray *xa, unsigned long start, |
@@ -610,11 +655,11 @@ retry: | |||
610 | xas_lock(&xas); | 655 | xas_lock(&xas); |
611 | xas_for_each_conflict(&xas, entry) { | 656 | xas_for_each_conflict(&xas, entry) { |
612 | XA_BUG_ON(xa, !xa_is_value(entry)); | 657 | XA_BUG_ON(xa, !xa_is_value(entry)); |
613 | XA_BUG_ON(xa, entry < xa_mk_value(start)); | 658 | XA_BUG_ON(xa, entry < xa_mk_index(start)); |
614 | XA_BUG_ON(xa, entry > xa_mk_value(start + (1UL << order) - 1)); | 659 | XA_BUG_ON(xa, entry > xa_mk_index(start + (1UL << order) - 1)); |
615 | count++; | 660 | count++; |
616 | } | 661 | } |
617 | xas_store(&xas, xa_mk_value(start)); | 662 | xas_store(&xas, xa_mk_index(start)); |
618 | xas_unlock(&xas); | 663 | xas_unlock(&xas); |
619 | if (xas_nomem(&xas, GFP_KERNEL)) { | 664 | if (xas_nomem(&xas, GFP_KERNEL)) { |
620 | count = 0; | 665 | count = 0; |
@@ -622,9 +667,9 @@ retry: | |||
622 | } | 667 | } |
623 | XA_BUG_ON(xa, xas_error(&xas)); | 668 | XA_BUG_ON(xa, xas_error(&xas)); |
624 | XA_BUG_ON(xa, count != present); | 669 | XA_BUG_ON(xa, count != present); |
625 | XA_BUG_ON(xa, xa_load(xa, start) != xa_mk_value(start)); | 670 | XA_BUG_ON(xa, xa_load(xa, start) != xa_mk_index(start)); |
626 | XA_BUG_ON(xa, xa_load(xa, start + (1UL << order) - 1) != | 671 | XA_BUG_ON(xa, xa_load(xa, start + (1UL << order) - 1) != |
627 | xa_mk_value(start)); | 672 | xa_mk_index(start)); |
628 | xa_erase_index(xa, start); | 673 | xa_erase_index(xa, start); |
629 | } | 674 | } |
630 | 675 | ||
@@ -703,7 +748,7 @@ static noinline void check_multi_find_2(struct xarray *xa) | |||
703 | for (j = 0; j < index; j++) { | 748 | for (j = 0; j < index; j++) { |
704 | XA_STATE(xas, xa, j + index); | 749 | XA_STATE(xas, xa, j + index); |
705 | xa_store_index(xa, index - 1, GFP_KERNEL); | 750 | xa_store_index(xa, index - 1, GFP_KERNEL); |
706 | xa_store_order(xa, index, i, xa_mk_value(index), | 751 | xa_store_order(xa, index, i, xa_mk_index(index), |
707 | GFP_KERNEL); | 752 | GFP_KERNEL); |
708 | rcu_read_lock(); | 753 | rcu_read_lock(); |
709 | xas_for_each(&xas, entry, ULONG_MAX) { | 754 | xas_for_each(&xas, entry, ULONG_MAX) { |
@@ -778,7 +823,7 @@ static noinline void check_find_2(struct xarray *xa) | |||
778 | j = 0; | 823 | j = 0; |
779 | index = 0; | 824 | index = 0; |
780 | xa_for_each(xa, entry, index, ULONG_MAX, XA_PRESENT) { | 825 | xa_for_each(xa, entry, index, ULONG_MAX, XA_PRESENT) { |
781 | XA_BUG_ON(xa, xa_mk_value(index) != entry); | 826 | XA_BUG_ON(xa, xa_mk_index(index) != entry); |
782 | XA_BUG_ON(xa, index != j++); | 827 | XA_BUG_ON(xa, index != j++); |
783 | } | 828 | } |
784 | } | 829 | } |
@@ -786,10 +831,34 @@ static noinline void check_find_2(struct xarray *xa) | |||
786 | xa_destroy(xa); | 831 | xa_destroy(xa); |
787 | } | 832 | } |
788 | 833 | ||
834 | static noinline void check_find_3(struct xarray *xa) | ||
835 | { | ||
836 | XA_STATE(xas, xa, 0); | ||
837 | unsigned long i, j, k; | ||
838 | void *entry; | ||
839 | |||
840 | for (i = 0; i < 100; i++) { | ||
841 | for (j = 0; j < 100; j++) { | ||
842 | for (k = 0; k < 100; k++) { | ||
843 | xas_set(&xas, j); | ||
844 | xas_for_each_marked(&xas, entry, k, XA_MARK_0) | ||
845 | ; | ||
846 | if (j > k) | ||
847 | XA_BUG_ON(xa, | ||
848 | xas.xa_node != XAS_RESTART); | ||
849 | } | ||
850 | } | ||
851 | xa_store_index(xa, i, GFP_KERNEL); | ||
852 | xa_set_mark(xa, i, XA_MARK_0); | ||
853 | } | ||
854 | xa_destroy(xa); | ||
855 | } | ||
856 | |||
789 | static noinline void check_find(struct xarray *xa) | 857 | static noinline void check_find(struct xarray *xa) |
790 | { | 858 | { |
791 | check_find_1(xa); | 859 | check_find_1(xa); |
792 | check_find_2(xa); | 860 | check_find_2(xa); |
861 | check_find_3(xa); | ||
793 | check_multi_find(xa); | 862 | check_multi_find(xa); |
794 | check_multi_find_2(xa); | 863 | check_multi_find_2(xa); |
795 | } | 864 | } |
@@ -829,11 +898,11 @@ static noinline void check_find_entry(struct xarray *xa) | |||
829 | for (index = 0; index < (1UL << (order + 5)); | 898 | for (index = 0; index < (1UL << (order + 5)); |
830 | index += (1UL << order)) { | 899 | index += (1UL << order)) { |
831 | xa_store_order(xa, index, order, | 900 | xa_store_order(xa, index, order, |
832 | xa_mk_value(index), GFP_KERNEL); | 901 | xa_mk_index(index), GFP_KERNEL); |
833 | XA_BUG_ON(xa, xa_load(xa, index) != | 902 | XA_BUG_ON(xa, xa_load(xa, index) != |
834 | xa_mk_value(index)); | 903 | xa_mk_index(index)); |
835 | XA_BUG_ON(xa, xa_find_entry(xa, | 904 | XA_BUG_ON(xa, xa_find_entry(xa, |
836 | xa_mk_value(index)) != index); | 905 | xa_mk_index(index)) != index); |
837 | } | 906 | } |
838 | XA_BUG_ON(xa, xa_find_entry(xa, xa) != -1); | 907 | XA_BUG_ON(xa, xa_find_entry(xa, xa) != -1); |
839 | xa_destroy(xa); | 908 | xa_destroy(xa); |
@@ -844,7 +913,7 @@ static noinline void check_find_entry(struct xarray *xa) | |||
844 | XA_BUG_ON(xa, xa_find_entry(xa, xa) != -1); | 913 | XA_BUG_ON(xa, xa_find_entry(xa, xa) != -1); |
845 | xa_store_index(xa, ULONG_MAX, GFP_KERNEL); | 914 | xa_store_index(xa, ULONG_MAX, GFP_KERNEL); |
846 | XA_BUG_ON(xa, xa_find_entry(xa, xa) != -1); | 915 | XA_BUG_ON(xa, xa_find_entry(xa, xa) != -1); |
847 | XA_BUG_ON(xa, xa_find_entry(xa, xa_mk_value(LONG_MAX)) != -1); | 916 | XA_BUG_ON(xa, xa_find_entry(xa, xa_mk_index(ULONG_MAX)) != -1); |
848 | xa_erase_index(xa, ULONG_MAX); | 917 | xa_erase_index(xa, ULONG_MAX); |
849 | XA_BUG_ON(xa, !xa_empty(xa)); | 918 | XA_BUG_ON(xa, !xa_empty(xa)); |
850 | } | 919 | } |
@@ -864,7 +933,7 @@ static noinline void check_move_small(struct xarray *xa, unsigned long idx) | |||
864 | XA_BUG_ON(xa, xas.xa_node == XAS_RESTART); | 933 | XA_BUG_ON(xa, xas.xa_node == XAS_RESTART); |
865 | XA_BUG_ON(xa, xas.xa_index != i); | 934 | XA_BUG_ON(xa, xas.xa_index != i); |
866 | if (i == 0 || i == idx) | 935 | if (i == 0 || i == idx) |
867 | XA_BUG_ON(xa, entry != xa_mk_value(i)); | 936 | XA_BUG_ON(xa, entry != xa_mk_index(i)); |
868 | else | 937 | else |
869 | XA_BUG_ON(xa, entry != NULL); | 938 | XA_BUG_ON(xa, entry != NULL); |
870 | } | 939 | } |
@@ -878,7 +947,7 @@ static noinline void check_move_small(struct xarray *xa, unsigned long idx) | |||
878 | XA_BUG_ON(xa, xas.xa_node == XAS_RESTART); | 947 | XA_BUG_ON(xa, xas.xa_node == XAS_RESTART); |
879 | XA_BUG_ON(xa, xas.xa_index != i); | 948 | XA_BUG_ON(xa, xas.xa_index != i); |
880 | if (i == 0 || i == idx) | 949 | if (i == 0 || i == idx) |
881 | XA_BUG_ON(xa, entry != xa_mk_value(i)); | 950 | XA_BUG_ON(xa, entry != xa_mk_index(i)); |
882 | else | 951 | else |
883 | XA_BUG_ON(xa, entry != NULL); | 952 | XA_BUG_ON(xa, entry != NULL); |
884 | } while (i > 0); | 953 | } while (i > 0); |
@@ -909,7 +978,7 @@ static noinline void check_move(struct xarray *xa) | |||
909 | do { | 978 | do { |
910 | void *entry = xas_prev(&xas); | 979 | void *entry = xas_prev(&xas); |
911 | i--; | 980 | i--; |
912 | XA_BUG_ON(xa, entry != xa_mk_value(i)); | 981 | XA_BUG_ON(xa, entry != xa_mk_index(i)); |
913 | XA_BUG_ON(xa, i != xas.xa_index); | 982 | XA_BUG_ON(xa, i != xas.xa_index); |
914 | } while (i != 0); | 983 | } while (i != 0); |
915 | 984 | ||
@@ -918,7 +987,7 @@ static noinline void check_move(struct xarray *xa) | |||
918 | 987 | ||
919 | do { | 988 | do { |
920 | void *entry = xas_next(&xas); | 989 | void *entry = xas_next(&xas); |
921 | XA_BUG_ON(xa, entry != xa_mk_value(i)); | 990 | XA_BUG_ON(xa, entry != xa_mk_index(i)); |
922 | XA_BUG_ON(xa, i != xas.xa_index); | 991 | XA_BUG_ON(xa, i != xas.xa_index); |
923 | i++; | 992 | i++; |
924 | } while (i < (1 << 16)); | 993 | } while (i < (1 << 16)); |
@@ -934,7 +1003,7 @@ static noinline void check_move(struct xarray *xa) | |||
934 | void *entry = xas_prev(&xas); | 1003 | void *entry = xas_prev(&xas); |
935 | i--; | 1004 | i--; |
936 | if ((i < (1 << 8)) || (i >= (1 << 15))) | 1005 | if ((i < (1 << 8)) || (i >= (1 << 15))) |
937 | XA_BUG_ON(xa, entry != xa_mk_value(i)); | 1006 | XA_BUG_ON(xa, entry != xa_mk_index(i)); |
938 | else | 1007 | else |
939 | XA_BUG_ON(xa, entry != NULL); | 1008 | XA_BUG_ON(xa, entry != NULL); |
940 | XA_BUG_ON(xa, i != xas.xa_index); | 1009 | XA_BUG_ON(xa, i != xas.xa_index); |
@@ -946,7 +1015,7 @@ static noinline void check_move(struct xarray *xa) | |||
946 | do { | 1015 | do { |
947 | void *entry = xas_next(&xas); | 1016 | void *entry = xas_next(&xas); |
948 | if ((i < (1 << 8)) || (i >= (1 << 15))) | 1017 | if ((i < (1 << 8)) || (i >= (1 << 15))) |
949 | XA_BUG_ON(xa, entry != xa_mk_value(i)); | 1018 | XA_BUG_ON(xa, entry != xa_mk_index(i)); |
950 | else | 1019 | else |
951 | XA_BUG_ON(xa, entry != NULL); | 1020 | XA_BUG_ON(xa, entry != NULL); |
952 | XA_BUG_ON(xa, i != xas.xa_index); | 1021 | XA_BUG_ON(xa, i != xas.xa_index); |
@@ -976,7 +1045,7 @@ static noinline void xa_store_many_order(struct xarray *xa, | |||
976 | if (xas_error(&xas)) | 1045 | if (xas_error(&xas)) |
977 | goto unlock; | 1046 | goto unlock; |
978 | for (i = 0; i < (1U << order); i++) { | 1047 | for (i = 0; i < (1U << order); i++) { |
979 | XA_BUG_ON(xa, xas_store(&xas, xa_mk_value(index + i))); | 1048 | XA_BUG_ON(xa, xas_store(&xas, xa_mk_index(index + i))); |
980 | xas_next(&xas); | 1049 | xas_next(&xas); |
981 | } | 1050 | } |
982 | unlock: | 1051 | unlock: |
@@ -1031,9 +1100,9 @@ static noinline void check_create_range_4(struct xarray *xa, | |||
1031 | if (xas_error(&xas)) | 1100 | if (xas_error(&xas)) |
1032 | goto unlock; | 1101 | goto unlock; |
1033 | for (i = 0; i < (1UL << order); i++) { | 1102 | for (i = 0; i < (1UL << order); i++) { |
1034 | void *old = xas_store(&xas, xa_mk_value(base + i)); | 1103 | void *old = xas_store(&xas, xa_mk_index(base + i)); |
1035 | if (xas.xa_index == index) | 1104 | if (xas.xa_index == index) |
1036 | XA_BUG_ON(xa, old != xa_mk_value(base + i)); | 1105 | XA_BUG_ON(xa, old != xa_mk_index(base + i)); |
1037 | else | 1106 | else |
1038 | XA_BUG_ON(xa, old != NULL); | 1107 | XA_BUG_ON(xa, old != NULL); |
1039 | xas_next(&xas); | 1108 | xas_next(&xas); |
@@ -1085,10 +1154,10 @@ static noinline void __check_store_range(struct xarray *xa, unsigned long first, | |||
1085 | unsigned long last) | 1154 | unsigned long last) |
1086 | { | 1155 | { |
1087 | #ifdef CONFIG_XARRAY_MULTI | 1156 | #ifdef CONFIG_XARRAY_MULTI |
1088 | xa_store_range(xa, first, last, xa_mk_value(first), GFP_KERNEL); | 1157 | xa_store_range(xa, first, last, xa_mk_index(first), GFP_KERNEL); |
1089 | 1158 | ||
1090 | XA_BUG_ON(xa, xa_load(xa, first) != xa_mk_value(first)); | 1159 | XA_BUG_ON(xa, xa_load(xa, first) != xa_mk_index(first)); |
1091 | XA_BUG_ON(xa, xa_load(xa, last) != xa_mk_value(first)); | 1160 | XA_BUG_ON(xa, xa_load(xa, last) != xa_mk_index(first)); |
1092 | XA_BUG_ON(xa, xa_load(xa, first - 1) != NULL); | 1161 | XA_BUG_ON(xa, xa_load(xa, first - 1) != NULL); |
1093 | XA_BUG_ON(xa, xa_load(xa, last + 1) != NULL); | 1162 | XA_BUG_ON(xa, xa_load(xa, last + 1) != NULL); |
1094 | 1163 | ||
@@ -1195,7 +1264,7 @@ static noinline void check_account(struct xarray *xa) | |||
1195 | XA_BUG_ON(xa, xas.xa_node->nr_values != 0); | 1264 | XA_BUG_ON(xa, xas.xa_node->nr_values != 0); |
1196 | rcu_read_unlock(); | 1265 | rcu_read_unlock(); |
1197 | 1266 | ||
1198 | xa_store_order(xa, 1 << order, order, xa_mk_value(1 << order), | 1267 | xa_store_order(xa, 1 << order, order, xa_mk_index(1UL << order), |
1199 | GFP_KERNEL); | 1268 | GFP_KERNEL); |
1200 | XA_BUG_ON(xa, xas.xa_node->count != xas.xa_node->nr_values * 2); | 1269 | XA_BUG_ON(xa, xas.xa_node->count != xas.xa_node->nr_values * 2); |
1201 | 1270 | ||