From 38ec1e712cf0347eb3589e7811c4bff205292372 Mon Sep 17 00:00:00 2001 From: "Liam R. Howlett" Date: Mon, 28 Jan 2019 14:08:29 -0500 Subject: [PATCH] test_maple_tree: port nomem thread race test. Test to see that allocations work when two threads are racing. Signed-off-by: Liam R. Howlett --- lib/test_maple_tree.c | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/lib/test_maple_tree.c b/lib/test_maple_tree.c index 22d912ddce5d..b77d8d78ec93 100644 --- a/lib/test_maple_tree.c +++ b/lib/test_maple_tree.c @@ -106,15 +106,14 @@ void check_index_load(struct maple_tree *mt, unsigned long index) static noinline void check_nomem(struct maple_tree *mt) { -#if 0 MA_STATE(ms, mt, 1, 1); MT_BUG_ON(mt, !mtree_empty(mt)); /* Storing something at 1 requires memory allocation */ - MT_BUG_ON(mt, mtree_insert_index(mt, 1, GFP_ATOMIC) != -ENOMEM); + MT_BUG_ON(mt, mtree_insert(mt, 1, &ms, GFP_ATOMIC) != -ENOMEM); /* Storing something at 0 does not */ - MT_BUG_ON(mt, mtree_insert_index(mt, 0, GFP_ATOMIC) != 0); + MT_BUG_ON(mt, mtree_insert(mt, 0, &ms, GFP_ATOMIC) != 0); /* * Simulate two threads racing; the first one fails to allocate @@ -125,20 +124,16 @@ static noinline void check_nomem(struct maple_tree *mt) * userspace test suite. */ mtree_lock(mt); - _maple_setup_insert(&ms); + ma_insert(&ms, &ms); // insert 1 -> &ms, fails. MT_BUG_ON(mt, ms.node != MA_ERROR(-ENOMEM)); - _maple_insert(&ms, xa_mk_value(1)); - mas_nomem(&ms, GFP_KERNEL); + mas_nomem(&ms, GFP_KERNEL); // Node allocated in here. MT_BUG_ON(mt, ms.node != MAS_START); mtree_unlock(mt); - MT_BUG_ON(mt, mtree_insert_index(mt, 2, GFP_KERNEL) != 0); + MT_BUG_ON(mt, mtree_insert(mt, 2, mt, GFP_KERNEL) != 0); mtree_lock(mt); - _maple_setup_insert(&ms); - _maple_insert(&ms, xa_mk_value(1)); - mas_nomem(&ms, GFP_KERNEL); + ma_insert(&ms, &ms); // insert 1 -> &ms + mas_nomem(&ms, GFP_KERNEL); // Node allocated in here. mtree_unlock(mt); -#endif - mtree_destroy(mt); } -- 2.50.1