Commit 7b16d58b authored by paul luse's avatar paul luse Committed by Tomasz Zawadzki
Browse files

module/passthru: fix bug with queueing IO to bdev layer



The PT channel was used as a parameter for spdk_bdev_queue_io_wait()
when it should have been the underlying base bdev's channel.

Signed-off-by: default avatarpaul luse <paul.e.luse@intel.com>
Change-Id: I6c4cf32016935a20eafd565e5688ffc43b1d9533
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/790


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarDarek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
parent a95a9220
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -215,13 +215,15 @@ static void
vbdev_passthru_queue_io(struct spdk_bdev_io *bdev_io)
{
	struct passthru_bdev_io *io_ctx = (struct passthru_bdev_io *)bdev_io->driver_ctx;
	struct pt_io_channel *pt_ch = spdk_io_channel_get_ctx(io_ctx->ch);
	int rc;

	io_ctx->bdev_io_wait.bdev = bdev_io->bdev;
	io_ctx->bdev_io_wait.cb_fn = vbdev_passthru_resubmit_io;
	io_ctx->bdev_io_wait.cb_arg = bdev_io;

	rc = spdk_bdev_queue_io_wait(bdev_io->bdev, io_ctx->ch, &io_ctx->bdev_io_wait);
	/* Queue the IO using the channel of the base device. */
	rc = spdk_bdev_queue_io_wait(bdev_io->bdev, pt_ch->base_ch, &io_ctx->bdev_io_wait);
	if (rc != 0) {
		SPDK_ERRLOG("Queue io failed in vbdev_passthru_queue_io, rc=%d.\n", rc);
		spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_FAILED);