Commit d7ac3d92 authored by Alexey Marchuk's avatar Alexey Marchuk Committed by Tomasz Zawadzki
Browse files

bdev/part: Use ext bdev API in IO path



That will allow to pass ext opts to bdev layer

Since in ext API metadata is passed as part of ext IO opts
structure and ext opts can be NULL (e.g. upper layed used
regular API), in that case we use *blocks_with_md API

Signed-off-by: default avatarAlexey Marchuk <alexeymar@mellanox.com>
Change-Id: I1bfb3fcb11bf42e100ecc7e4058087f12086db3a
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/11048


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Community-CI: Mellanox Build Bot
Reviewed-by: default avatarShuhei Matsumoto <smatsumoto@nvidia.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarTomasz Zawadzki <tomasz.zawadzki@intel.com>
parent be440c01
Loading
Loading
Loading
Loading
+12 −10
Original line number Diff line number Diff line
@@ -320,11 +320,12 @@ spdk_bdev_part_submit_request(struct spdk_bdev_part_channel *ch, struct spdk_bde
	/* Modify the I/O to adjust for the offset within the base bdev. */
	switch (bdev_io->type) {
	case SPDK_BDEV_IO_TYPE_READ:
		if (bdev_io->u.bdev.md_buf == NULL) {
			rc = spdk_bdev_readv_blocks(base_desc, base_ch, bdev_io->u.bdev.iovs,
		if (bdev_io->u.bdev.ext_opts || !bdev_io->u.bdev.md_buf) {
			rc = spdk_bdev_readv_blocks_ext(base_desc, base_ch, bdev_io->u.bdev.iovs,
							bdev_io->u.bdev.iovcnt, remapped_offset,
							bdev_io->u.bdev.num_blocks,
						    bdev_part_complete_read_io, bdev_io);
							bdev_part_complete_read_io, bdev_io,
							bdev_io->u.bdev.ext_opts);
		} else {
			rc = spdk_bdev_readv_blocks_with_md(base_desc, base_ch,
							    bdev_io->u.bdev.iovs,
@@ -340,11 +341,12 @@ spdk_bdev_part_submit_request(struct spdk_bdev_part_channel *ch, struct spdk_bde
			return SPDK_BDEV_IO_STATUS_FAILED;
		}

		if (bdev_io->u.bdev.md_buf == NULL) {
			rc = spdk_bdev_writev_blocks(base_desc, base_ch, bdev_io->u.bdev.iovs,
		if (bdev_io->u.bdev.ext_opts || !bdev_io->u.bdev.md_buf) {
			rc = spdk_bdev_writev_blocks_ext(base_desc, base_ch, bdev_io->u.bdev.iovs,
							 bdev_io->u.bdev.iovcnt, remapped_offset,
							 bdev_io->u.bdev.num_blocks,
						     bdev_part_complete_io, bdev_io);
							 bdev_part_complete_io, bdev_io,
							 bdev_io->u.bdev.ext_opts);
		} else {
			rc = spdk_bdev_writev_blocks_with_md(base_desc, base_ch,
							     bdev_io->u.bdev.iovs,