bdev/part: Add copy IO type support

Signed-off-by: Evgeniy Kochetov <evgeniik@nvidia.com>
Change-Id: I9e2dcf29794fdb9535a4f0282b3046602f09188e
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/14385
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@nvidia.com>
Reviewed-by: Shuhei Matsumoto <smatsumoto@nvidia.com>
Community-CI: Mellanox Build Bot
This commit is contained in:
Evgeniy Kochetov 2022-09-06 16:16:05 +03:00 committed by Tomasz Zawadzki
parent 789f48dec7
commit a383a15fb1

View File

@ -272,7 +272,7 @@ spdk_bdev_part_submit_request(struct spdk_bdev_part_channel *ch, struct spdk_bde
struct spdk_bdev_part *part = ch->part; struct spdk_bdev_part *part = ch->part;
struct spdk_io_channel *base_ch = ch->base_ch; struct spdk_io_channel *base_ch = ch->base_ch;
struct spdk_bdev_desc *base_desc = part->internal.base->desc; struct spdk_bdev_desc *base_desc = part->internal.base->desc;
uint64_t offset, remapped_offset; uint64_t offset, remapped_offset, remapped_src_offset;
int rc = 0; int rc = 0;
offset = bdev_io->u.bdev.offset_blocks; offset = bdev_io->u.bdev.offset_blocks;
@ -368,6 +368,12 @@ spdk_bdev_part_submit_request(struct spdk_bdev_part_channel *ch, struct spdk_bde
bdev_io->u.bdev.num_blocks, bdev_io->u.bdev.num_blocks,
bdev_part_complete_io, bdev_io); bdev_part_complete_io, bdev_io);
break; break;
case SPDK_BDEV_IO_TYPE_COPY:
remapped_src_offset = bdev_io->u.bdev.copy.src_offset_blocks + part->internal.offset_blocks;
rc = spdk_bdev_copy_blocks(base_desc, base_ch, remapped_offset, remapped_src_offset,
bdev_io->u.bdev.num_blocks, bdev_part_complete_io,
bdev_io);
break;
default: default:
SPDK_ERRLOG("unknown I/O type %d\n", bdev_io->type); SPDK_ERRLOG("unknown I/O type %d\n", bdev_io->type);
return SPDK_BDEV_IO_STATUS_FAILED; return SPDK_BDEV_IO_STATUS_FAILED;