From ff661c800318f37ff4e36c5f90c6992173a619f0 Mon Sep 17 00:00:00 2001 From: Changpeng Liu Date: Mon, 25 Oct 2021 22:09:33 +0800 Subject: [PATCH] vbdev_delay: fix wrong usage of spdk_for_each_channel() We can't call spdk_io_channel_iter_get_channel() in the completion callback of spdk_for_each_channel(), the value is always NULL. Change-Id: I65bc972da8a7ab309f3cab438432196a59f26bd4 Signed-off-by: Changpeng Liu Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/9983 Reviewed-by: Aleksey Marchuk Reviewed-by: Ben Walker Reviewed-by: Jim Harris Reviewed-by: Dong Yi Community-CI: Broadcom CI Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins --- module/bdev/delay/vbdev_delay.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/module/bdev/delay/vbdev_delay.c b/module/bdev/delay/vbdev_delay.c index dfc4935c9..d9e4345aa 100644 --- a/module/bdev/delay/vbdev_delay.c +++ b/module/bdev/delay/vbdev_delay.c @@ -304,8 +304,8 @@ static void vbdev_delay_reset_dev(struct spdk_io_channel_iter *i, int status) { struct spdk_bdev_io *bdev_io = spdk_io_channel_iter_get_ctx(i); - struct spdk_io_channel *ch = spdk_io_channel_iter_get_channel(i); - struct delay_io_channel *delay_ch = spdk_io_channel_get_ctx(ch); + struct delay_bdev_io *io_ctx = (struct delay_bdev_io *)bdev_io->driver_ctx; + struct delay_io_channel *delay_ch = spdk_io_channel_get_ctx(io_ctx->ch); struct vbdev_delay *delay_node = spdk_io_channel_iter_get_io_device(i); int rc;