Commit a289f081 authored by Krzysztof Smolinski's avatar Krzysztof Smolinski Committed by Tomasz Zawadzki
Browse files

raid0: io metadata support



Signed-off-by: default avatarKrzysztof Smolinski <krzysztof.smolinski@intel.com>
Change-Id: Ia2519cd2726f82328cde3d5db2eb323d2a975219
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/15128


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Mellanox Build Bot
Reviewed-by: default avatarTomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarArtur Paszkiewicz <artur.paszkiewicz@intel.com>
parent 8f424ed8
Loading
Loading
Loading
Loading
+24 −8
Original line number Diff line number Diff line
@@ -104,15 +104,31 @@ raid0_submit_rw_request(struct raid_bdev_io *raid_io)
	assert(raid_ch->base_channel);
	base_ch = raid_ch->base_channel[pd_idx];
	if (bdev_io->type == SPDK_BDEV_IO_TYPE_READ) {
		if (bdev_io->u.bdev.ext_opts != NULL) {
			ret = spdk_bdev_readv_blocks_ext(base_info->desc, base_ch,
							 bdev_io->u.bdev.iovs, bdev_io->u.bdev.iovcnt,
							 pd_lba, pd_blocks, raid0_bdev_io_completion,
							 raid_io, bdev_io->u.bdev.ext_opts);
		} else {
			ret = spdk_bdev_readv_blocks_with_md(base_info->desc, base_ch,
							     bdev_io->u.bdev.iovs, bdev_io->u.bdev.iovcnt,
							     bdev_io->u.bdev.md_buf,
							     pd_lba, pd_blocks,
							     raid0_bdev_io_completion, raid_io);
		}
	} else if (bdev_io->type == SPDK_BDEV_IO_TYPE_WRITE) {
		if (bdev_io->u.bdev.ext_opts != NULL) {
			ret = spdk_bdev_writev_blocks_ext(base_info->desc, base_ch,
							  bdev_io->u.bdev.iovs, bdev_io->u.bdev.iovcnt,
							  pd_lba, pd_blocks, raid0_bdev_io_completion,
							  raid_io, bdev_io->u.bdev.ext_opts);
		} else {
			ret = spdk_bdev_writev_blocks_with_md(base_info->desc, base_ch,
							      bdev_io->u.bdev.iovs, bdev_io->u.bdev.iovcnt,
							      bdev_io->u.bdev.md_buf,
							      pd_lba, pd_blocks,
							      raid0_bdev_io_completion, raid_io);
		}
	} else {
		SPDK_ERRLOG("Recvd not supported io type %u\n", bdev_io->type);
		assert(0);
+19 −0
Original line number Diff line number Diff line
@@ -297,6 +297,15 @@ spdk_bdev_writev_blocks_ext(struct spdk_bdev_desc *desc, struct spdk_io_channel
	return spdk_bdev_writev_blocks(desc, ch, iov, iovcnt, offset_blocks, num_blocks, cb, cb_arg);
}

int
spdk_bdev_writev_blocks_with_md(struct spdk_bdev_desc *desc, struct spdk_io_channel *ch,
				struct iovec *iov, int iovcnt, void *md,
				uint64_t offset_blocks, uint64_t num_blocks,
				spdk_bdev_io_completion_cb cb, void *cb_arg)
{
	return spdk_bdev_writev_blocks(desc, ch, iov, iovcnt, offset_blocks, num_blocks, cb, cb_arg);
}

int
spdk_bdev_reset(struct spdk_bdev_desc *desc, struct spdk_io_channel *ch,
		spdk_bdev_io_completion_cb cb, void *cb_arg)
@@ -480,6 +489,16 @@ spdk_bdev_readv_blocks_ext(struct spdk_bdev_desc *desc, struct spdk_io_channel *
	return spdk_bdev_readv_blocks(desc, ch, iov, iovcnt, offset_blocks, num_blocks, cb, cb_arg);
}

int
spdk_bdev_readv_blocks_with_md(struct spdk_bdev_desc *desc,	struct spdk_io_channel *ch,
			       struct iovec *iov, int iovcnt, void *md,
			       uint64_t offset_blocks, uint64_t num_blocks,
			       spdk_bdev_io_completion_cb cb, void *cb_arg)
{
	return spdk_bdev_readv_blocks(desc, ch, iov, iovcnt, offset_blocks, num_blocks, cb, cb_arg);
}


void
spdk_bdev_module_release_bdev(struct spdk_bdev *bdev)
{