Skip to content

Commit

Permalink
idr test suite: Improve reporting from idr_find_test_1
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Matthew Wilcox (Oracle) committed Apr 1, 2021
1 parent 094ffbd commit 2c7e57a
Showing 1 changed file with 10 additions and 1 deletion.
11 changes: 10 additions & 1 deletion tools/testing/radix-tree/idr-test.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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();
Expand Down

0 comments on commit 2c7e57a

Please sign in to comment.