Commit 9b36011a authored by Shuhei Matsumoto's avatar Shuhei Matsumoto Committed by Tomasz Zawadzki
Browse files

bdevperf: Hold io_target_groups until exiting bdevperf



Previously bdevperf_free_targets() had freed not only io_targets
but also io_target_groups.  This had made repeated runs by RPC
impossible.  This patch series will fix this issue later but we
cannot wait for that and fix the issue now.

Fixes #1139.

Signed-off-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: I88cf5725579b704bc3826bd4c0b2dd9f4e70db30
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/479912


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarChangpeng Liu <changpeng.liu@intel.com>
Reviewed-by: default avatarTomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
parent 116a4afc
Loading
Loading
Loading
Loading
+12 −2
Original line number Diff line number Diff line
@@ -257,6 +257,17 @@ error:
	return -1;
}

static void
blockdev_heads_destroy(void)
{
	struct io_target_group *group, *tmp;

	TAILQ_FOREACH_SAFE(group, &g_bdevperf.groups, link, tmp) {
		TAILQ_REMOVE(&g_bdevperf.groups, group, link);
		free(group);
	}
}

static void
bdevperf_free_target(struct io_target *target)
{
@@ -280,12 +291,10 @@ bdevperf_free_targets(void)
	struct io_target *target, *tmp_target;

	TAILQ_FOREACH_SAFE(group, &g_bdevperf.groups, link, tmp_group) {
		TAILQ_REMOVE(&g_bdevperf.groups, group, link);
		TAILQ_FOREACH_SAFE(target, &group->targets, link, tmp_target) {
			TAILQ_REMOVE(&group->targets, target, link);
			bdevperf_free_target(target);
		}
		free(group);
	}
}

@@ -454,6 +463,7 @@ bdevperf_construct_targets(void)
static void
bdevperf_fini(void)
{
	blockdev_heads_destroy();
	spdk_app_stop(g_run_rc);
}