Commit e0daee98 authored by Shuhei Matsumoto's avatar Shuhei Matsumoto Committed by Tomasz Zawadzki
Browse files

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: default avatarShuhei Matsumoto <smatsumoto@nvidia.com>
Change-Id: I839f454d643254f2b805f3d4c65282deee037d71
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/15003


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Mellanox Build Bot
Reviewed-by: default avatarAleksey Marchuk <alexeymar@nvidia.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
parent cff39ee7
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -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);