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:
parent
be440c01c9
commit
d7ac3d92e4
@ -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,
|
||||
|
Loading…
Reference in New Issue
Block a user