bdev/error: Use spdk_bdev_part_submit_request_ext() to use custom completion callback

This is a preparation to inject data corruption at completion for
read I/O.

Signed-off-by: Shuhei Matsumoto <smatsumoto@nvidia.com>
Change-Id: I839f454d643254f2b805f3d4c65282deee037d71
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/15003
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Mellanox Build Bot
Reviewed-by: Aleksey Marchuk <alexeymar@nvidia.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
Shuhei Matsumoto 2022-10-28 11:00:21 +09:00 committed by Tomasz Zawadzki
parent cff39ee7d5
commit e0daee9840

View File

@ -156,6 +156,14 @@ vbdev_error_get_error_type(struct error_disk *error_disk, uint32_t io_type)
return 0;
}
static void
vbdev_error_complete_request(struct spdk_bdev_io *bdev_io, bool success, void *cb_arg)
{
int status = success ? SPDK_BDEV_IO_STATUS_SUCCESS : SPDK_BDEV_IO_STATUS_FAILED;
spdk_bdev_io_complete(bdev_io, status);
}
static void
vbdev_error_submit_request(struct spdk_io_channel *_ch, struct spdk_bdev_io *bdev_io)
{
@ -180,7 +188,8 @@ vbdev_error_submit_request(struct spdk_io_channel *_ch, struct spdk_bdev_io *bde
error_disk->error_vector[bdev_io->type].error_num--;
break;
case 0:
rc = spdk_bdev_part_submit_request(&ch->part_ch, bdev_io);
rc = spdk_bdev_part_submit_request_ext(&ch->part_ch, bdev_io,
vbdev_error_complete_request);
if (rc) {
SPDK_ERRLOG("bdev_error: submit request failed, rc=%d\n", rc);