From 6e6d04b683d9f2cc1cd4f8fc5cf72aaa0e6d9adb Mon Sep 17 00:00:00 2001 From: Artur Paszkiewicz Date: Tue, 8 Oct 2019 14:56:24 +0200 Subject: [PATCH] module/raid: move duplicated error handling code Both callers of raid0_submit_rw_request() perform the same error handling. Put it inside the function and change its return value to void. After that, raid0_get_curr_base_bdev_index() becomes unused, so remove it. Signed-off-by: Artur Paszkiewicz Change-Id: Ifbe88700e413c3af9bb513538b3026c19e857d74 Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/471077 Tested-by: SPDK CI Jenkins Reviewed-by: Ben Walker Reviewed-by: Shuhei Matsumoto Reviewed-by: Jim Harris --- module/bdev/raid/bdev_raid.c | 59 +++++++++--------------------------- 1 file changed, 14 insertions(+), 45 deletions(-) diff --git a/module/bdev/raid/bdev_raid.c b/module/bdev/raid/bdev_raid.c index 1cac4d9eeb..60a2369878 100644 --- a/module/bdev/raid/bdev_raid.c +++ b/module/bdev/raid/bdev_raid.c @@ -309,6 +309,13 @@ raid_bdev_base_io_completion(struct spdk_bdev_io *bdev_io, bool success, void *c } } +static void +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); + +static void +raid0_waitq_io_process(void *ctx); + /* * brief: * raid0_submit_rw_request function is used to submit I/O to the correct @@ -317,10 +324,9 @@ raid_bdev_base_io_completion(struct spdk_bdev_io *bdev_io, bool success, void *c * bdev_io - parent bdev io * start_strip - start strip number of this io * returns: - * 0 - success - * non zero - failure + * none */ -static int +static void 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; @@ -367,35 +373,11 @@ raid0_submit_rw_request(struct spdk_bdev_io *bdev_io, uint64_t start_strip) assert(0); } - return ret; + if (ret != 0) { + raid_bdev_queue_io_wait(bdev_io, pd_idx, raid0_waitq_io_process, ret); + } } -/* - * brief: - * raid0_get_curr_base_bdev_index function calculates the base bdev index - * for raid0 bdevs. - * params: - * raid_bdev - pointer to raid bdev - * raid_io - pointer to parent io context - * returns: - * base bdev index - */ -static uint8_t -raid0_get_curr_base_bdev_index(struct raid_bdev *raid_bdev, struct raid_bdev_io *raid_io) -{ - struct spdk_bdev_io *bdev_io; - uint64_t start_strip; - - bdev_io = SPDK_CONTAINEROF(raid_io, struct spdk_bdev_io, driver_ctx); - start_strip = bdev_io->u.bdev.offset_blocks >> raid_bdev->strip_size_shift; - - return (start_strip % raid_bdev->num_base_bdevs); -} - -static void -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); - /* * brief: * raid0_waitq_io_process function is the callback function @@ -411,7 +393,6 @@ raid0_waitq_io_process(void *ctx) { struct spdk_bdev_io *bdev_io = ctx; struct raid_bdev *raid_bdev; - int ret; uint64_t start_strip; /* @@ -420,13 +401,7 @@ raid0_waitq_io_process(void *ctx) */ raid_bdev = (struct raid_bdev *)bdev_io->bdev->ctxt; start_strip = bdev_io->u.bdev.offset_blocks >> raid_bdev->strip_size_shift; - ret = raid0_submit_rw_request(bdev_io, start_strip); - if (ret != 0) { - struct raid_bdev_io *raid_io = (struct raid_bdev_io *)bdev_io->driver_ctx; - uint8_t pd_idx = raid0_get_curr_base_bdev_index(raid_bdev, raid_io); - - raid_bdev_queue_io_wait(bdev_io, pd_idx, raid0_waitq_io_process, ret); - } + raid0_submit_rw_request(bdev_io, start_strip); } /* @@ -446,7 +421,6 @@ raid0_start_rw_request(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_io) struct raid_bdev *raid_bdev; uint64_t start_strip = 0; uint64_t end_strip = 0; - int ret; raid_bdev = (struct raid_bdev *)bdev_io->bdev->ctxt; raid_io = (struct raid_bdev_io *)bdev_io->driver_ctx; @@ -460,12 +434,7 @@ raid0_start_rw_request(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_io) spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_FAILED); return; } - ret = raid0_submit_rw_request(bdev_io, start_strip); - if (ret != 0) { - uint8_t pd_idx = raid0_get_curr_base_bdev_index(raid_bdev, raid_io); - - raid_bdev_queue_io_wait(bdev_io, pd_idx, raid0_waitq_io_process, ret); - } + raid0_submit_rw_request(bdev_io, start_strip); } /*