module/raid: replace ch with raid_ch in struct raid_bdev_io

The original io channel is not used directly, only its context (struct
raid_bdev_io_channel) which contains member bdevs' io channels. Store it
directly in raid_bdev_io to eliminate conversions.

Signed-off-by: Artur Paszkiewicz <artur.paszkiewicz@intel.com>
Change-Id: Ibff64f75ceff9bf1d431cc3071dfc99f374107ea
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/471081
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
This commit is contained in:
Artur Paszkiewicz 2019-10-10 11:23:01 +02:00 committed by Tomasz Zawadzki
parent 706029d5be
commit 152cce0d53
3 changed files with 10 additions and 15 deletions

View File

@ -327,7 +327,6 @@ raid_bdev_queue_io_wait(struct spdk_bdev_io *raid_bdev_io, uint8_t pd_idx,
spdk_bdev_io_wait_cb cb_fn, int ret) spdk_bdev_io_wait_cb cb_fn, int ret)
{ {
struct raid_bdev_io *raid_io = (struct raid_bdev_io *)raid_bdev_io->driver_ctx; struct raid_bdev_io *raid_io = (struct raid_bdev_io *)raid_bdev_io->driver_ctx;
struct raid_bdev_io_channel *raid_ch = spdk_io_channel_get_ctx(raid_io->ch);
struct raid_bdev *raid_bdev = (struct raid_bdev *)raid_bdev_io->bdev->ctxt; struct raid_bdev *raid_bdev = (struct raid_bdev *)raid_bdev_io->bdev->ctxt;
assert(ret != 0); assert(ret != 0);
@ -337,7 +336,7 @@ raid_bdev_queue_io_wait(struct spdk_bdev_io *raid_bdev_io, uint8_t pd_idx,
raid_io->waitq_entry.cb_fn = cb_fn; raid_io->waitq_entry.cb_fn = cb_fn;
raid_io->waitq_entry.cb_arg = raid_bdev_io; raid_io->waitq_entry.cb_arg = raid_bdev_io;
spdk_bdev_queue_io_wait(raid_bdev->base_bdev_info[pd_idx].bdev, spdk_bdev_queue_io_wait(raid_bdev->base_bdev_info[pd_idx].bdev,
raid_ch->base_channel[pd_idx], raid_io->raid_ch->base_channel[pd_idx],
&raid_io->waitq_entry); &raid_io->waitq_entry);
return; return;
} }
@ -363,18 +362,16 @@ _raid_bdev_submit_reset_request_next(void *_bdev_io)
struct spdk_bdev_io *bdev_io = _bdev_io; struct spdk_bdev_io *bdev_io = _bdev_io;
struct raid_bdev_io *raid_io; struct raid_bdev_io *raid_io;
struct raid_bdev *raid_bdev; struct raid_bdev *raid_bdev;
struct raid_bdev_io_channel *raid_ch;
int ret; int ret;
uint8_t i; uint8_t i;
raid_bdev = (struct raid_bdev *)bdev_io->bdev->ctxt; raid_bdev = (struct raid_bdev *)bdev_io->bdev->ctxt;
raid_io = (struct raid_bdev_io *)bdev_io->driver_ctx; raid_io = (struct raid_bdev_io *)bdev_io->driver_ctx;
raid_ch = spdk_io_channel_get_ctx(raid_io->ch);
while (raid_io->base_bdev_io_submitted < raid_bdev->num_base_bdevs) { while (raid_io->base_bdev_io_submitted < raid_bdev->num_base_bdevs) {
i = raid_io->base_bdev_io_submitted; i = raid_io->base_bdev_io_submitted;
ret = spdk_bdev_reset(raid_bdev->base_bdev_info[i].desc, ret = spdk_bdev_reset(raid_bdev->base_bdev_info[i].desc,
raid_ch->base_channel[i], raid_io->raid_ch->base_channel[i],
raid_bdev_base_io_completion, bdev_io); raid_bdev_base_io_completion, bdev_io);
if (ret == 0) { if (ret == 0) {
raid_io->base_bdev_io_submitted++; raid_io->base_bdev_io_submitted++;
@ -404,7 +401,7 @@ _raid_bdev_submit_reset_request(struct spdk_io_channel *ch, struct spdk_bdev_io
raid_bdev = (struct raid_bdev *)bdev_io->bdev->ctxt; raid_bdev = (struct raid_bdev *)bdev_io->bdev->ctxt;
raid_io = (struct raid_bdev_io *)bdev_io->driver_ctx; raid_io = (struct raid_bdev_io *)bdev_io->driver_ctx;
raid_io->ch = ch; raid_io->raid_ch = spdk_io_channel_get_ctx(ch);
raid_io->base_bdev_io_submitted = 0; raid_io->base_bdev_io_submitted = 0;
raid_io->base_bdev_io_completed = 0; raid_io->base_bdev_io_completed = 0;
raid_io->base_bdev_io_expected = raid_bdev->num_base_bdevs; raid_io->base_bdev_io_expected = raid_bdev->num_base_bdevs;
@ -428,7 +425,7 @@ _raid_bdev_submit_null_payload_request(struct spdk_io_channel *ch, struct spdk_b
struct raid_bdev_io *raid_io; struct raid_bdev_io *raid_io;
raid_io = (struct raid_bdev_io *)bdev_io->driver_ctx; raid_io = (struct raid_bdev_io *)bdev_io->driver_ctx;
raid_io->ch = ch; raid_io->raid_ch = spdk_io_channel_get_ctx(ch);
raid_io->base_bdev_io_submitted = 0; raid_io->base_bdev_io_submitted = 0;
raid_io->base_bdev_io_completed = 0; raid_io->base_bdev_io_completed = 0;
raid_io->base_bdev_io_status = SPDK_BDEV_IO_STATUS_SUCCESS; raid_io->base_bdev_io_status = SPDK_BDEV_IO_STATUS_SUCCESS;

View File

@ -93,8 +93,8 @@ struct raid_bdev_io {
/* WaitQ entry, used only in waitq logic */ /* WaitQ entry, used only in waitq logic */
struct spdk_bdev_io_wait_entry waitq_entry; struct spdk_bdev_io_wait_entry waitq_entry;
/* Original channel for this IO, used in queuing logic */ /* Context of the original channel for this IO */
struct spdk_io_channel *ch; struct raid_bdev_io_channel *raid_ch;
/* Used for tracking progress on io requests sent to member disks. */ /* Used for tracking progress on io requests sent to member disks. */
uint8_t base_bdev_io_submitted; uint8_t base_bdev_io_submitted;

View File

@ -82,7 +82,7 @@ static void
raid0_submit_rw_request(struct spdk_bdev_io *bdev_io, uint64_t start_strip) raid0_submit_rw_request(struct spdk_bdev_io *bdev_io, uint64_t start_strip)
{ {
struct raid_bdev_io *raid_io = (struct raid_bdev_io *)bdev_io->driver_ctx; struct raid_bdev_io *raid_io = (struct raid_bdev_io *)bdev_io->driver_ctx;
struct raid_bdev_io_channel *raid_ch = spdk_io_channel_get_ctx(raid_io->ch); struct raid_bdev_io_channel *raid_ch = raid_io->raid_ch;
struct raid_bdev *raid_bdev = (struct raid_bdev *)bdev_io->bdev->ctxt; struct raid_bdev *raid_bdev = (struct raid_bdev *)bdev_io->bdev->ctxt;
uint64_t pd_strip; uint64_t pd_strip;
uint32_t offset_in_strip; uint32_t offset_in_strip;
@ -176,7 +176,7 @@ raid0_start_rw_request(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_io)
raid_bdev = (struct raid_bdev *)bdev_io->bdev->ctxt; raid_bdev = (struct raid_bdev *)bdev_io->bdev->ctxt;
raid_io = (struct raid_bdev_io *)bdev_io->driver_ctx; raid_io = (struct raid_bdev_io *)bdev_io->driver_ctx;
raid_io->ch = ch; raid_io->raid_ch = spdk_io_channel_get_ctx(ch);
start_strip = bdev_io->u.bdev.offset_blocks >> raid_bdev->strip_size_shift; start_strip = bdev_io->u.bdev.offset_blocks >> raid_bdev->strip_size_shift;
end_strip = (bdev_io->u.bdev.offset_blocks + bdev_io->u.bdev.num_blocks - 1) >> end_strip = (bdev_io->u.bdev.offset_blocks + bdev_io->u.bdev.num_blocks - 1) >>
raid_bdev->strip_size_shift; raid_bdev->strip_size_shift;
@ -301,13 +301,11 @@ raid0_submit_null_payload_request(void *_bdev_io)
struct spdk_bdev_io *bdev_io = _bdev_io; struct spdk_bdev_io *bdev_io = _bdev_io;
struct raid_bdev_io *raid_io; struct raid_bdev_io *raid_io;
struct raid_bdev *raid_bdev; struct raid_bdev *raid_bdev;
struct raid_bdev_io_channel *raid_ch;
struct raid_bdev_io_range io_range; struct raid_bdev_io_range io_range;
int ret; int ret;
raid_bdev = (struct raid_bdev *)bdev_io->bdev->ctxt; raid_bdev = (struct raid_bdev *)bdev_io->bdev->ctxt;
raid_io = (struct raid_bdev_io *)bdev_io->driver_ctx; raid_io = (struct raid_bdev_io *)bdev_io->driver_ctx;
raid_ch = spdk_io_channel_get_ctx(raid_io->ch);
_raid0_get_io_range(&io_range, raid_bdev->num_base_bdevs, _raid0_get_io_range(&io_range, raid_bdev->num_base_bdevs,
raid_bdev->strip_size, raid_bdev->strip_size_shift, raid_bdev->strip_size, raid_bdev->strip_size_shift,
@ -330,14 +328,14 @@ raid0_submit_null_payload_request(void *_bdev_io)
switch (bdev_io->type) { switch (bdev_io->type) {
case SPDK_BDEV_IO_TYPE_UNMAP: case SPDK_BDEV_IO_TYPE_UNMAP:
ret = spdk_bdev_unmap_blocks(raid_bdev->base_bdev_info[disk_idx].desc, ret = spdk_bdev_unmap_blocks(raid_bdev->base_bdev_info[disk_idx].desc,
raid_ch->base_channel[disk_idx], raid_io->raid_ch->base_channel[disk_idx],
offset_in_disk, nblocks_in_disk, offset_in_disk, nblocks_in_disk,
raid_bdev_base_io_completion, bdev_io); raid_bdev_base_io_completion, bdev_io);
break; break;
case SPDK_BDEV_IO_TYPE_FLUSH: case SPDK_BDEV_IO_TYPE_FLUSH:
ret = spdk_bdev_flush_blocks(raid_bdev->base_bdev_info[disk_idx].desc, ret = spdk_bdev_flush_blocks(raid_bdev->base_bdev_info[disk_idx].desc,
raid_ch->base_channel[disk_idx], raid_io->raid_ch->base_channel[disk_idx],
offset_in_disk, nblocks_in_disk, offset_in_disk, nblocks_in_disk,
raid_bdev_base_io_completion, bdev_io); raid_bdev_base_io_completion, bdev_io);
break; break;