]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
bcachefs: eytzinger0_find_test improvement
authorAndreas Gruenbacher <agruenba@redhat.com>
Sun, 26 Jan 2025 10:22:33 +0000 (11:22 +0100)
committerKent Overstreet <kent.overstreet@linux.dev>
Sat, 15 Mar 2025 01:02:13 +0000 (21:02 -0400)
In eytzinger0_find_test(), remember the smallest element seen so far
instead of comparing adjacent array elements.

Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/util.c

index 2af77c410179c9a66caee28c9c29acff8517dc07..4114e5264965bbfdf0bbfbe5410c42aa63607c15 100644 (file)
@@ -808,15 +808,18 @@ void eytzinger0_find_test(void)
        u16 *test_array = kmalloc_array(allocated, sizeof(test_array[0]), GFP_KERNEL);
 
        for (nr = 1; nr < allocated; nr++) {
+               u16 prev = 0;
+
                pr_info("testing %u elems\n", nr);
 
                get_random_bytes(test_array, nr * sizeof(test_array[0]));
                eytzinger0_sort(test_array, nr, sizeof(test_array[0]), cmp_u16, NULL);
 
                /* verify array is sorted correctly: */
-               eytzinger0_for_each(j, nr)
-                       BUG_ON(j != eytzinger0_last(nr) &&
-                              test_array[j] > test_array[eytzinger0_next(j, nr)]);
+               eytzinger0_for_each(j, nr) {
+                       BUG_ON(test_array[j] < prev);
+                       prev = test_array[j];
+               }
 
                for (i = 0; i < U16_MAX; i += 1 << 12)
                        eytzinger0_find_test_val(test_array, nr, i);