Commit e3dde60a authored by Karl Bonde Torp's avatar Karl Bonde Torp Committed by Tomasz Zawadzki
Browse files

bdev_xnvme: add support for write_zeroes



Change-Id: Ia3866eddb326fcfb6b749641ba10adb4d22b4899
Signed-off-by: default avatarKarl Bonde Torp <k.torp@samsung.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/20695


Reviewed-by: default avatarTomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: default avatarJim Harris <jim.harris@samsung.com>
Community-CI: Mellanox Build Bot
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
parent 5c678b79
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -151,7 +151,12 @@ _xnvme_submit_request(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_io)
		ctx->cmd.nvm.nlb = bdev_io->u.bdev.num_blocks - 1;
		ctx->cmd.nvm.slba = bdev_io->u.bdev.offset_blocks;
		break;

	case SPDK_BDEV_IO_TYPE_WRITE_ZEROES:
		ctx->cmd.common.opcode = XNVME_SPEC_NVM_OPC_WRITE_ZEROES;
		ctx->cmd.common.nsid = xnvme->nsid;
		ctx->cmd.nvm.nlb = bdev_io->u.bdev.num_blocks - 1;
		ctx->cmd.nvm.slba = bdev_io->u.bdev.offset_blocks;
		break;
	default:
		SPDK_ERRLOG("Wrong io type\n");

@@ -220,6 +225,9 @@ bdev_xnvme_submit_request(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_
		spdk_bdev_io_get_buf(bdev_io, bdev_xnvme_get_buf_cb,
				     bdev_io->u.bdev.num_blocks * bdev_io->bdev->blocklen);
		break;
	case SPDK_BDEV_IO_TYPE_WRITE_ZEROES:
		_xnvme_submit_request(ch, bdev_io);
		break;

	default:
		spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_FAILED);
@@ -373,6 +381,7 @@ create_xnvme_bdev(const char *name, const char *filename, const char *io_mechani
	xnvme->bdev.module = &xnvme_if;

	xnvme->bdev.write_cache = 0;
	xnvme->bdev.max_write_zeroes = UINT16_MAX + 1;

	if (block_size == 0) {
		SPDK_ERRLOG("Block size could not be auto-detected\n");