From cb8dbf17dc528ef313b94df2592f3ffccab50916 Mon Sep 17 00:00:00 2001 From: Artur Paszkiewicz Date: Thu, 10 Oct 2019 12:07:02 +0200 Subject: [PATCH] module/raid: add raid_bdev pointer to struct raid_io This will make it easier to get to the raid_bdev when we only have the raid_io. Signed-off-by: Artur Paszkiewicz Change-Id: I91df14f788a51ada10b0f8356de2162c1f34520c Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/471085 Tested-by: SPDK CI Jenkins Reviewed-by: Jim Harris Reviewed-by: Shuhei Matsumoto --- module/bdev/raid/bdev_raid.c | 5 +++-- module/bdev/raid/bdev_raid.h | 3 +++ module/bdev/raid/raid0.c | 4 ++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/module/bdev/raid/bdev_raid.c b/module/bdev/raid/bdev_raid.c index 1fcede202..332f8afe5 100644 --- a/module/bdev/raid/bdev_raid.c +++ b/module/bdev/raid/bdev_raid.c @@ -327,7 +327,7 @@ 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) { struct raid_bdev_io *raid_io = (struct raid_bdev_io *)raid_bdev_io->driver_ctx; - struct raid_bdev *raid_bdev = (struct raid_bdev *)raid_bdev_io->bdev->ctxt; + struct raid_bdev *raid_bdev = raid_io->raid_bdev; assert(ret != 0); @@ -377,7 +377,7 @@ raid_bdev_submit_reset_request(struct raid_bdev_io *raid_io) uint8_t i; bdev_io = spdk_bdev_io_from_ctx(raid_io); - raid_bdev = (struct raid_bdev *)bdev_io->bdev->ctxt; + raid_bdev = raid_io->raid_bdev; raid_io->base_bdev_io_expected = raid_bdev->num_base_bdevs; @@ -436,6 +436,7 @@ raid_bdev_submit_request(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_i { struct raid_bdev_io *raid_io = (struct raid_bdev_io *)bdev_io->driver_ctx; + raid_io->raid_bdev = bdev_io->bdev->ctxt; raid_io->raid_ch = spdk_io_channel_get_ctx(ch); raid_io->base_bdev_io_submitted = 0; raid_io->base_bdev_io_completed = 0; diff --git a/module/bdev/raid/bdev_raid.h b/module/bdev/raid/bdev_raid.h index 844d9cf72..f6b7258ee 100644 --- a/module/bdev/raid/bdev_raid.h +++ b/module/bdev/raid/bdev_raid.h @@ -90,6 +90,9 @@ struct raid_base_bdev_info { * related to bdev_io for a raid bdev */ struct raid_bdev_io { + /* The raid bdev associated with this IO */ + struct raid_bdev *raid_bdev; + /* WaitQ entry, used only in waitq logic */ struct spdk_bdev_io_wait_entry waitq_entry; diff --git a/module/bdev/raid/raid0.c b/module/bdev/raid/raid0.c index 4fb5d28ea..153d0f229 100644 --- a/module/bdev/raid/raid0.c +++ b/module/bdev/raid/raid0.c @@ -82,7 +82,7 @@ raid0_submit_rw_request(struct raid_bdev_io *raid_io) { struct spdk_bdev_io *bdev_io = spdk_bdev_io_from_ctx(raid_io); 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 = raid_io->raid_bdev; uint64_t pd_strip; uint32_t offset_in_strip; uint64_t pd_lba; @@ -284,7 +284,7 @@ raid0_submit_null_payload_request(struct raid_bdev_io *raid_io) int ret; bdev_io = spdk_bdev_io_from_ctx(raid_io); - raid_bdev = (struct raid_bdev *)bdev_io->bdev->ctxt; + raid_bdev = raid_io->raid_bdev; _raid0_get_io_range(&io_range, raid_bdev->num_base_bdevs, raid_bdev->strip_size, raid_bdev->strip_size_shift,