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:
parent
706029d5be
commit
152cce0d53
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user