Commit be19fe4b authored by Jim Harris's avatar Jim Harris Committed by Tomasz Zawadzki
Browse files

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: default avatarJim Harris <james.r.harris@intel.com>
Change-Id: I29774b36c5f294072011fcf810e8b7346842c303
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/15503


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarAleksey Marchuk <alexeymar@nvidia.com>
Reviewed-by: default avatarChangpeng Liu <changpeng.liu@intel.com>
parent 0e7821e9
Loading
Loading
Loading
Loading
+20 −5
Original line number Diff line number Diff line
@@ -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