Commit 6e6d04b6 authored by Artur Paszkiewicz's avatar Artur Paszkiewicz Committed by Jim Harris
Browse files

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: default avatarArtur Paszkiewicz <artur.paszkiewicz@intel.com>
Change-Id: Ifbe88700e413c3af9bb513538b3026c19e857d74
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/471077


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
parent 1d246e97
Loading
Loading
Loading
Loading
+14 −45
Original line number Diff line number Diff line
@@ -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);
}

/*