mirror of
https://github.com/torvalds/linux.git
synced 2024-12-28 13:51:44 +00:00
XArray tests: Check iterating over multiorder entries
There was no bug here, but there was no test coverage for this scenario. Signed-off-by: Matthew Wilcox <willy@infradead.org>
This commit is contained in:
parent
b7677a132a
commit
4f145cd66a
@ -476,6 +476,32 @@ static noinline void check_multi_store_2(struct xarray *xa, unsigned long index,
|
||||
xas_unlock(&xas);
|
||||
XA_BUG_ON(xa, !xa_empty(xa));
|
||||
}
|
||||
|
||||
static noinline void check_multi_store_3(struct xarray *xa, unsigned long index,
|
||||
unsigned int order)
|
||||
{
|
||||
XA_STATE(xas, xa, 0);
|
||||
void *entry;
|
||||
int n = 0;
|
||||
|
||||
xa_store_order(xa, index, order, xa_mk_index(index), GFP_KERNEL);
|
||||
|
||||
xas_lock(&xas);
|
||||
xas_for_each(&xas, entry, ULONG_MAX) {
|
||||
XA_BUG_ON(xa, entry != xa_mk_index(index));
|
||||
n++;
|
||||
}
|
||||
XA_BUG_ON(xa, n != 1);
|
||||
xas_set(&xas, index + 1);
|
||||
xas_for_each(&xas, entry, ULONG_MAX) {
|
||||
XA_BUG_ON(xa, entry != xa_mk_index(index));
|
||||
n++;
|
||||
}
|
||||
XA_BUG_ON(xa, n != 2);
|
||||
xas_unlock(&xas);
|
||||
|
||||
xa_destroy(xa);
|
||||
}
|
||||
#endif
|
||||
|
||||
static noinline void check_multi_store(struct xarray *xa)
|
||||
@ -550,6 +576,11 @@ static noinline void check_multi_store(struct xarray *xa)
|
||||
check_multi_store_1(xa, (1UL << i) + 1, i);
|
||||
}
|
||||
check_multi_store_2(xa, 4095, 9);
|
||||
|
||||
for (i = 1; i < 20; i++) {
|
||||
check_multi_store_3(xa, 0, i);
|
||||
check_multi_store_3(xa, 1UL << i, i);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user