Commit 05752408 authored by GangCao's avatar GangCao Committed by Tomasz Zawadzki
Browse files

test/bdevio: add a shutdown function

In the case of handling shutdown signal, a self defined
shutdown function is needed to properly handle the cleanup.

This is to fix below issue:
https://github.com/spdk/spdk/issues/1612



Change-Id: I9e1645980bd4b1340667745eec9ff0f3e7a025c6
Signed-off-by: default avatarGangCao <gang.cao@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/4569


Reviewed-by: default avatarXiaodong Liu <xiaodong.liu@intel.com>
Reviewed-by: default avatarChangpeng Liu <changpeng.liu@intel.com>
Reviewed-by: default avatar <dongx.yi@intel.com>
Reviewed-by: default avatarTomasz Zawadzki <tomasz.zawadzki@intel.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Mellanox Build Bot
parent ef20d525
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -57,6 +57,7 @@ static struct spdk_thread *g_thread_ut;
static struct spdk_thread *g_thread_io;
static bool g_wait_for_tests = false;
static int g_num_failures = 0;
static bool g_shutdown = false;

struct io_target {
	struct spdk_bdev	*bdev;
@@ -1117,7 +1118,7 @@ __stop_init_thread(void *arg)
	g_num_failures = 0;

	bdevio_cleanup_targets();
	if (g_wait_for_tests) {
	if (g_wait_for_tests && !g_shutdown) {
		/* Do not stop the app yet, wait for another RPC */
		rpc_perform_tests_cb(num_failures, request);
		return;
@@ -1411,6 +1412,13 @@ invalid:
}
SPDK_RPC_REGISTER("perform_tests", rpc_perform_tests, SPDK_RPC_RUNTIME)

static void
spdk_bdevio_shutdown_cb(void)
{
	g_shutdown = true;
	spdk_thread_send_msg(g_thread_init, __stop_init_thread, NULL);
}

int
main(int argc, char **argv)
{
@@ -1420,6 +1428,7 @@ main(int argc, char **argv)
	spdk_app_opts_init(&opts);
	opts.name = "bdevio";
	opts.reactor_mask = "0x7";
	opts.shutdown_cb = spdk_bdevio_shutdown_cb;

	if ((rc = spdk_app_parse_args(argc, argv, &opts, "w", NULL,
				      bdevio_parse_arg, bdevio_usage)) !=