From 02ee95731136e55323dd5564cbab82a0a4515baa Mon Sep 17 00:00:00 2001 From: Utz-Uwe Haus <uhaus@hpe.com> Date: Fri, 19 Aug 2022 15:52:25 +0300 Subject: [PATCH] Ensure mstro_init/finalize can be called multile times The pc thread stop indicator needs to be reset for this to work. Closes #203 --- maestro/ofi.c | 7 +++---- tests/check_pm_collision.sh.in | 2 +- tests/colliding_client.c | 2 ++ 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/maestro/ofi.c b/maestro/ofi.c index a4486034..da7320cf 100644 --- a/maestro/ofi.c +++ b/maestro/ofi.c @@ -1922,10 +1922,6 @@ mstro_ofi_init(void) const struct fi_info* fi = g_endpoints->eps[g_endpoints->size].fi; - if((fi->domain_attr->mr_mode & FI_MR_ENDPOINT)) { - WARN("FIXME: missing support for FI_MR_ENDPOINT domains in some regions -- FIXME\n"); - } - uint64_t requested_key = fi->domain_attr->mr_mode & FI_MR_PROV_KEY ? 0 : mstro_memory_new_key(); int ret = fi_mr_reg(g_endpoints->eps[g_endpoints->size].domain, &g_pm_component_descriptor, sizeof(g_pm_component_descriptor), @@ -3419,6 +3415,8 @@ mstro_pc_thread(void *closure) mio_thread_fini(&mthread); #endif + g_pc_stop=false; /* in case someone does a second round of mstro_init */ + return NULL; } @@ -3460,6 +3458,7 @@ mstro_pc_terminate(void) /* simulate detach (local only) */ atomic_store(&g_mstro_pm_attached, false); g_pool_app_id = MSTRO_APP_ID_INVALID; + DEBUG("Simulated detach (no PM)\n"); break; } default: diff --git a/tests/check_pm_collision.sh.in b/tests/check_pm_collision.sh.in index f926eef1..71fd136c 100644 --- a/tests/check_pm_collision.sh.in +++ b/tests/check_pm_collision.sh.in @@ -88,7 +88,7 @@ export MSTRO_POOL_MANAGER_INFO #make sure client 1 started already -sleep 0.5 +sleep 1 # start client 2 (env ${CLIENT_CMD}_2) || exit 99 & diff --git a/tests/colliding_client.c b/tests/colliding_client.c index 473bd040..1fba3802 100644 --- a/tests/colliding_client.c +++ b/tests/colliding_client.c @@ -70,6 +70,8 @@ CHEAT_TEST(colliding_client, } else{ cheat_assert(MSTRO_NOT_TWICE == mstro_init("test","client",1)); + cheat_yield(); cheat_assert(MSTRO_FAIL == mstro_finalize()); + cheat_yield(); } ) -- GitLab