Commit f549a995 authored by Changpeng Liu's avatar Changpeng Liu Committed by Konrad Sztyber
Browse files

vhost_blk: return VIRTIO_BLK_S_UNSUPP for flush command



SPDK vhost-blk doesn't negociate `VIRTIO_BLK_F_FLUSH` nor
`VIRTIO_BLK_F_CONFIG_WCE` feature bits, but we can still
receive FLUSH commands from VM, here we return correct
errno for these commands in case the backend block device
doesn't support it.

Partly fix issue #3572.

Change-Id: Ib6269818ae94b38bebed3603fa8b87e97d7e7ab1
Signed-off-by: default avatarChangpeng Liu <changpeliu@tencent.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/25435


Community-CI: Community CI Samsung <spdk.community.ci.samsung@gmail.com>
Reviewed-by: default avatarJim Harris <jim.harris@nvidia.com>
Community-CI: Mellanox Build Bot
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Reviewed-by: default avatarKonrad Sztyber <konrad.sztyber@intel.com>
Reviewed-by: default avatarGangCao <gang.cao@intel.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
parent c02c5e04
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -6486,6 +6486,10 @@ spdk_bdev_flush_blocks(struct spdk_bdev_desc *desc, struct spdk_io_channel *ch,
		return -EBADF;
	}

	if (spdk_unlikely(!bdev_io_type_supported(bdev, SPDK_BDEV_IO_TYPE_FLUSH))) {
		return -ENOTSUP;
	}

	if (!bdev_io_valid_blocks(bdev, offset_blocks, num_blocks)) {
		return -EINVAL;
	}
+3 −0
Original line number Diff line number Diff line
@@ -620,6 +620,9 @@ virtio_blk_process_request(struct spdk_vhost_dev *vdev, struct spdk_io_channel *
			if (rc == -ENOMEM) {
				SPDK_DEBUGLOG(vhost_blk, "No memory, start to queue io.\n");
				blk_request_queue_io(vdev, ch, task);
			} else if (rc == -ENOTSUP) {
				blk_request_finish(VIRTIO_BLK_S_UNSUPP, task);
				return -1;
			} else {
				blk_request_finish(VIRTIO_BLK_S_IOERR, task);
				return -1;