From aa3df274395358f09ce60f65949bd4fdc5770b8e Mon Sep 17 00:00:00 2001 From: Shuhei Matsumoto Date: Sun, 22 Dec 2019 23:36:56 -0500 Subject: [PATCH] bdevperf: Call put_io_channel on the core which called get_io_channel spdk_put_io_channel() sends message if the core on which it is called is different from the core which called spdk_get_io_channel(). However, ch->ref is guarded by mutex at free and we should call spdk_put_io_channel() on the core which called spdk_get_io_channel() as possible as we can. Hence move spdk_put_io_channel() from end_run() to bdevperf_complete(). Signed-off-by: Shuhei Matsumoto Change-Id: I8816b28625869662c6b9124036b619b76bf96a3c Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/478709 Tested-by: SPDK CI Jenkins Community-CI: SPDK CI Jenkins Reviewed-by: Seth Howell Reviewed-by: Ben Walker Reviewed-by: Jim Harris --- test/bdev/bdevperf/bdevperf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/bdev/bdevperf/bdevperf.c b/test/bdev/bdevperf/bdevperf.c index cf4ff37a9..0ffabd553 100644 --- a/test/bdev/bdevperf/bdevperf.c +++ b/test/bdev/bdevperf/bdevperf.c @@ -434,7 +434,6 @@ end_run(void *arg1, void *arg2) struct io_target *target = arg1; int rc = 0; - spdk_put_io_channel(target->ch); spdk_bdev_close(target->bdev_desc); if (--g_target_count == 0) { if (g_show_performance_real_time) { @@ -531,6 +530,7 @@ bdevperf_complete(struct spdk_bdev_io *bdev_io, bool success, void *cb_arg) } else { TAILQ_INSERT_TAIL(&target->task_list, task, link); if (target->current_queue_depth == 0) { + spdk_put_io_channel(target->ch); complete = spdk_event_allocate(g_master_core, end_run, target, NULL); spdk_event_call(complete); }