summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Gruenbacher <agruenba@redhat.com>2025-01-26 11:22:33 +0100
committerKent Overstreet <kent.overstreet@linux.dev>2025-02-25 20:52:49 -0500
commit892c75b1c2debf2225e995ee9a62d195e04f54df (patch)
tree50754ee6ace54d723a3ff47b0c3923314c3e144e
parent86c42b6e109fcba7beaba43b896f4aab5295c8fc (diff)
bcachefs: eytzinger0_find_test improvement
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>
-rw-r--r--fs/bcachefs/util.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/fs/bcachefs/util.c b/fs/bcachefs/util.c
index 953ed5ad38a4..55bf19578e3a 100644
--- a/fs/bcachefs/util.c
+++ b/fs/bcachefs/util.c
@@ -802,15 +802,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);