From 9b36011acc2eae14d6206d339f1bd2a9a1cf08ac Mon Sep 17 00:00:00 2001 From: Shuhei Matsumoto Date: Thu, 9 Jan 2020 19:31:50 -0500 Subject: [PATCH] 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: Shuhei Matsumoto Change-Id: I88cf5725579b704bc3826bd4c0b2dd9f4e70db30 Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/479912 Tested-by: SPDK CI Jenkins Community-CI: SPDK CI Jenkins Reviewed-by: Changpeng Liu Reviewed-by: Tomasz Zawadzki Reviewed-by: Jim Harris --- test/bdev/bdevperf/bdevperf.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/test/bdev/bdevperf/bdevperf.c b/test/bdev/bdevperf/bdevperf.c index 5f23d35da..6d170a5fc 100644 --- a/test/bdev/bdevperf/bdevperf.c +++ b/test/bdev/bdevperf/bdevperf.c @@ -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); }