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 <artur.paszkiewicz@intel.com> Change-Id: Ifbe88700e413c3af9bb513538b3026c19e857d74 Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/471077 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
parent
1d246e97ab
commit
6e6d04b683
@ -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:
|
* brief:
|
||||||
* raid0_submit_rw_request function is used to submit I/O to the correct
|
* 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
|
* bdev_io - parent bdev io
|
||||||
* start_strip - start strip number of this io
|
* start_strip - start strip number of this io
|
||||||
* returns:
|
* returns:
|
||||||
* 0 - success
|
* none
|
||||||
* non zero - failure
|
|
||||||
*/
|
*/
|
||||||
static int
|
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;
|
||||||
@ -367,35 +373,11 @@ raid0_submit_rw_request(struct spdk_bdev_io *bdev_io, uint64_t start_strip)
|
|||||||
assert(0);
|
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:
|
* brief:
|
||||||
* raid0_waitq_io_process function is the callback function
|
* 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 spdk_bdev_io *bdev_io = ctx;
|
||||||
struct raid_bdev *raid_bdev;
|
struct raid_bdev *raid_bdev;
|
||||||
int ret;
|
|
||||||
uint64_t start_strip;
|
uint64_t start_strip;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -420,13 +401,7 @@ raid0_waitq_io_process(void *ctx)
|
|||||||
*/
|
*/
|
||||||
raid_bdev = (struct raid_bdev *)bdev_io->bdev->ctxt;
|
raid_bdev = (struct raid_bdev *)bdev_io->bdev->ctxt;
|
||||||
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;
|
||||||
ret = raid0_submit_rw_request(bdev_io, start_strip);
|
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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -446,7 +421,6 @@ raid0_start_rw_request(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_io)
|
|||||||
struct raid_bdev *raid_bdev;
|
struct raid_bdev *raid_bdev;
|
||||||
uint64_t start_strip = 0;
|
uint64_t start_strip = 0;
|
||||||
uint64_t end_strip = 0;
|
uint64_t end_strip = 0;
|
||||||
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;
|
||||||
@ -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);
|
spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_FAILED);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ret = raid0_submit_rw_request(bdev_io, start_strip);
|
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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user