bdevio: call spdk_thread_exit()

We need to make sure we call spdk_thread_exit()
to clean up the io and ut threads in the bdevio
app.

Signed-off-by: Jim Harris <james.r.harris@intel.com>
Change-Id: I29774b36c5f294072011fcf810e8b7346842c303
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/15503
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@nvidia.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
This commit is contained in:
Jim Harris 2022-11-17 03:15:35 +00:00 committed by Tomasz Zawadzki
parent 0e7821e99d
commit be19fe4bd7

View File

@ -74,6 +74,14 @@ wake_ut_thread(void)
pthread_mutex_unlock(&g_test_mutex);
}
static void
__exit_io_thread(void *arg)
{
assert(spdk_get_thread() == g_thread_io);
spdk_thread_exit(g_thread_io);
wake_ut_thread();
}
static void
__get_io_channel(void *arg)
{
@ -1220,6 +1228,9 @@ __stop_init_thread(void *arg)
rpc_perform_tests_cb(num_failures, request);
return;
}
assert(spdk_get_thread() == g_thread_init);
assert(spdk_get_thread() == spdk_thread_get_app_thread());
execute_spdk_function(__exit_io_thread, NULL);
spdk_app_stop(num_failures);
}
@ -1325,12 +1336,12 @@ __run_ut_thread(void *arg)
struct spdk_jsonrpc_request *request = arg;
int rc = 0;
struct io_target *target;
unsigned num_failures;
if (CU_initialize_registry() != CUE_SUCCESS) {
/* CUnit error, probably won't recover */
rc = CU_get_error();
stop_init_thread(-rc, request);
rc = -rc;
goto ret;
}
target = g_io_targets;
@ -1338,16 +1349,20 @@ __run_ut_thread(void *arg)
rc = __setup_ut_on_single_target(target);
if (rc < 0) {
/* CUnit error, probably won't recover */
stop_init_thread(-rc, request);
rc = -rc;
goto ret;
}
target = target->next;
}
CU_basic_set_mode(CU_BRM_VERBOSE);
CU_basic_run_tests();
num_failures = CU_get_number_of_failures();
rc = CU_get_number_of_failures();
CU_cleanup_registry();
stop_init_thread(num_failures, request);
ret:
stop_init_thread(rc, request);
assert(spdk_get_thread() == g_thread_ut);
spdk_thread_exit(g_thread_ut);
}
static void