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: Alexey Marchuk <alexeymar@mellanox.com>
Change-Id: I1bfb3fcb11bf42e100ecc7e4058087f12086db3a
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/11048
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Community-CI: Mellanox Build Bot
Reviewed-by: Shuhei Matsumoto <smatsumoto@nvidia.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
This commit is contained in:
Alexey Marchuk 2022-01-12 13:12:16 +03:00 committed by Tomasz Zawadzki
parent be440c01c9
commit d7ac3d92e4

View File

@ -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,
bdev_io->u.bdev.iovcnt, remapped_offset,
bdev_io->u.bdev.num_blocks,
bdev_part_complete_read_io, bdev_io);
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_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,
bdev_io->u.bdev.iovcnt, remapped_offset,
bdev_io->u.bdev.num_blocks,
bdev_part_complete_io, bdev_io);
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_io->u.bdev.ext_opts);
} else {
rc = spdk_bdev_writev_blocks_with_md(base_desc, base_ch,
bdev_io->u.bdev.iovs,