summaryrefslogtreecommitdiff
path: root/tools/testing/radix-tree/idr-test.c
diff options
context:
space:
mode:
authorMatthew Wilcox (Oracle) <willy@infradead.org>2021-04-01 14:50:42 +0300
committerMatthew Wilcox (Oracle) <willy@infradead.org>2021-04-01 14:50:42 +0300
commit2c7e57a02708a69d0194f9ef2a7b7e54f5a0484a (patch)
tree4d747492461ee5616597ec53fe0d2ccd654d37cc /tools/testing/radix-tree/idr-test.c
parent094ffbd1d8eaa27ed426feb8530cb1456348b018 (diff)
downloadlinux-2c7e57a02708a69d0194f9ef2a7b7e54f5a0484a.tar.xz
idr test suite: Improve reporting from idr_find_test_1
Instead of just reporting an assertion failure, report enough information that we can start diagnosing exactly went wrong. Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Diffstat (limited to 'tools/testing/radix-tree/idr-test.c')
-rw-r--r--tools/testing/radix-tree/idr-test.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/tools/testing/radix-tree/idr-test.c b/tools/testing/radix-tree/idr-test.c
index 6ce7460f3c7a..ca24f6839d50 100644
--- a/tools/testing/radix-tree/idr-test.c
+++ b/tools/testing/radix-tree/idr-test.c
@@ -296,6 +296,10 @@ static void *idr_throbber(void *arg)
return NULL;
}
+/*
+ * There are always either 1 or 2 objects in the IDR. If we find nothing,
+ * or we find something at an ID we didn't expect, that's a bug.
+ */
void idr_find_test_1(int anchor_id, int throbber_id)
{
pthread_t throbber;
@@ -311,7 +315,12 @@ void idr_find_test_1(int anchor_id, int throbber_id)
int id = 0;
void *entry = idr_get_next(&find_idr, &id);
rcu_read_unlock();
- BUG_ON(entry != xa_mk_value(id));
+ if ((id != anchor_id && id != throbber_id) ||
+ entry != xa_mk_value(id)) {
+ printf("%s(%d, %d): %p at %d\n", __func__, anchor_id,
+ throbber_id, entry, id);
+ abort();
+ }
rcu_read_lock();
} while (time(NULL) < start + 11);
rcu_read_unlock();