Loading lib/test_xarray.c +31 −0 Original line number Diff line number Diff line Loading @@ -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) Loading Loading @@ -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 Loading
lib/test_xarray.c +31 −0 Original line number Diff line number Diff line Loading @@ -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) Loading Loading @@ -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