Commit e5f28d5d authored by Shuhei Matsumoto's avatar Shuhei Matsumoto Committed by Changpeng Liu
Browse files

bdev/raid: Unify data type of number of base bdevs to uint8_t



Data type of number of base bdevs are corrupted. uint8_t is enough
and unify almost all related variables into uint8_t.

Signed-off-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: I323aaa229a76c3d5b5361d7643c3a9591ccad340
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/464357


Reviewed-by: default avataryidong0635 <dongx.yi@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarChangpeng Liu <changpeng.liu@intel.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
parent 441ecc09
Loading
Loading
Loading
Loading
+28 −29
Original line number Diff line number Diff line
@@ -196,7 +196,7 @@ raid_bdev_cleanup(struct raid_bdev *raid_bdev)
 * non zero - failure
 */
static void
raid_bdev_free_base_bdev_resource(struct raid_bdev *raid_bdev, uint32_t base_bdev_slot)
raid_bdev_free_base_bdev_resource(struct raid_bdev *raid_bdev, uint8_t base_bdev_slot)
{
	struct raid_base_bdev_info *info;

@@ -228,7 +228,7 @@ raid_bdev_destruct(void *ctxt)
	SPDK_DEBUGLOG(SPDK_LOG_BDEV_RAID, "raid_bdev_destruct\n");

	raid_bdev->destruct_called = true;
	for (uint16_t i = 0; i < raid_bdev->num_base_bdevs; i++) {
	for (uint8_t i = 0; i < raid_bdev->num_base_bdevs; i++) {
		/*
		 * Close all base bdev descriptors for which call has come from below
		 * layers.  Also close the descriptors if we have started shutdown.
@@ -303,7 +303,7 @@ raid_bdev_submit_rw_request(struct spdk_bdev_io *bdev_io, uint64_t start_strip)
	uint32_t			offset_in_strip;
	uint64_t			pd_lba;
	uint64_t			pd_blocks;
	uint32_t			pd_idx;
	uint8_t				pd_idx;
	int				ret = 0;

	pd_strip = start_strip / raid_bdev->num_base_bdevs;
@@ -606,14 +606,14 @@ struct raid_bdev_io_range {
	uint64_t	end_strip_in_disk;
	uint64_t	start_offset_in_strip;
	uint64_t	end_offset_in_strip;
	uint64_t	start_disk;
	uint64_t	end_disk;
	uint64_t	n_disks_involved;
	uint8_t		start_disk;
	uint8_t		end_disk;
	uint8_t		n_disks_involved;
};

static inline void
_raid_bdev_get_io_range(struct raid_bdev_io_range *io_range,
			uint64_t num_base_bdevs, uint64_t strip_size, uint64_t strip_size_shift,
			uint8_t num_base_bdevs, uint64_t strip_size, uint64_t strip_size_shift,
			uint64_t offset_blocks, uint64_t num_blocks)
{
	uint64_t	start_strip;
@@ -642,12 +642,11 @@ _raid_bdev_get_io_range(struct raid_bdev_io_range *io_range,
	 * Number of base bdevs involved is between 1 and num_base_bdevs.
	 * It will be 1 if the first strip and last strip are the same one.
	 */
	io_range->n_disks_involved = (end_strip - start_strip + 1);
	io_range->n_disks_involved = spdk_min(io_range->n_disks_involved, num_base_bdevs);
	io_range->n_disks_involved = spdk_min((end_strip - start_strip + 1), num_base_bdevs);
}

static inline void
_raid_bdev_split_io_range(struct raid_bdev_io_range *io_range, uint64_t disk_idx,
_raid_bdev_split_io_range(struct raid_bdev_io_range *io_range, uint8_t disk_idx,
			  uint64_t *_offset_in_disk, uint64_t *_nblocks_in_disk)
{
	uint64_t n_strips_in_disk;
@@ -688,7 +687,7 @@ _raid_bdev_split_io_range(struct raid_bdev_io_range *io_range, uint64_t disk_idx
			  + end_offset_in_disk - start_offset_in_disk + 1;

	SPDK_DEBUGLOG(SPDK_LOG_BDEV_RAID,
		      "raid_bdev (strip_size 0x%lx) splits IO to base_bdev (%lu) at (0x%lx, 0x%lx).\n",
		      "raid_bdev (strip_size 0x%lx) splits IO to base_bdev (%u) at (0x%lx, 0x%lx).\n",
		      io_range->strip_size, disk_idx, offset_in_disk, nblocks_in_disk);

	*_offset_in_disk = offset_in_disk;
@@ -727,7 +726,7 @@ _raid_bdev_submit_null_payload_request_next(void *_bdev_io)
	raid_io->base_bdev_io_expected = io_range.n_disks_involved;

	while (raid_io->base_bdev_io_submitted < raid_io->base_bdev_io_expected) {
		uint64_t disk_idx;
		uint8_t disk_idx;
		uint64_t offset_in_disk;
		uint64_t nblocks_in_disk;

@@ -879,7 +878,7 @@ raid_bdev_submit_request(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_i
inline static bool
_raid_bdev_io_type_supported(struct raid_bdev *raid_bdev, enum spdk_bdev_io_type io_type)
{
	uint16_t i;
	uint8_t i;

	for (i = 0; i < raid_bdev->num_base_bdevs; i++) {
		if (raid_bdev->base_bdev_info[i].bdev == NULL) {
@@ -974,7 +973,7 @@ raid_bdev_dump_info_json(void *ctx, struct spdk_json_write_ctx *w)
	spdk_json_write_named_uint32(w, "num_base_bdevs_discovered", raid_bdev->num_base_bdevs_discovered);
	spdk_json_write_name(w, "base_bdevs_list");
	spdk_json_write_array_begin(w);
	for (uint16_t i = 0; i < raid_bdev->num_base_bdevs; i++) {
	for (uint8_t i = 0; i < raid_bdev->num_base_bdevs; i++) {
		if (raid_bdev->base_bdev_info[i].bdev) {
			spdk_json_write_string(w, raid_bdev->base_bdev_info[i].bdev->name);
		} else {
@@ -1001,7 +1000,7 @@ raid_bdev_write_config_json(struct spdk_bdev *bdev, struct spdk_json_write_ctx *
{
	struct raid_bdev *raid_bdev = bdev->ctxt;
	struct spdk_bdev *base;
	uint16_t i;
	uint8_t i;

	spdk_json_write_object_begin(w);

@@ -1046,7 +1045,7 @@ static const struct spdk_bdev_fn_table g_raid_bdev_fn_table = {
void
raid_bdev_config_cleanup(struct raid_bdev_config *raid_cfg)
{
	uint32_t i;
	uint8_t i;

	TAILQ_REMOVE(&g_raid_config.raid_bdev_config_head, raid_cfg, link);
	g_raid_config.total_raid_bdev--;
@@ -1184,9 +1183,9 @@ raid_bdev_config_add(const char *raid_name, uint32_t strip_size, uint8_t num_bas
 */
int
raid_bdev_config_add_base_bdev(struct raid_bdev_config *raid_cfg, const char *base_bdev_name,
			       uint32_t slot)
			       uint8_t slot)
{
	uint32_t i;
	uint8_t i;
	struct raid_bdev_config *tmp;

	if (slot >= raid_cfg->num_base_bdevs) {
@@ -1416,7 +1415,7 @@ raid_bdev_get_running_config(FILE *fp)
	struct raid_bdev *raid_bdev;
	struct spdk_bdev *base;
	int index = 1;
	uint16_t i;
	uint8_t i;

	TAILQ_FOREACH(raid_bdev, &g_raid_bdev_configured_list, state_link) {
		fprintf(fp,
@@ -1424,7 +1423,7 @@ raid_bdev_get_running_config(FILE *fp)
			"[RAID%d]\n"
			"  Name %s\n"
			"  StripSize %" PRIu32 "\n"
			"  NumDevices %hu\n"
			"  NumDevices %u\n"
			"  RaidLevel %hhu\n",
			index, raid_bdev->bdev.name, raid_bdev->strip_size_kb,
			raid_bdev->num_base_bdevs, raid_bdev->raid_level);
@@ -1459,10 +1458,10 @@ raid_bdev_get_running_config(FILE *fp)
 */
static bool
raid_bdev_can_claim_bdev(const char *bdev_name, struct raid_bdev_config **_raid_cfg,
			 uint32_t *base_bdev_slot)
			 uint8_t *base_bdev_slot)
{
	struct raid_bdev_config *raid_cfg;
	uint32_t i;
	uint8_t i;

	TAILQ_FOREACH(raid_cfg, &g_raid_config.raid_bdev_config_head, link) {
		for (i = 0; i < raid_cfg->num_base_bdevs; i++) {
@@ -1599,7 +1598,7 @@ raid_bdev_create(struct raid_bdev_config *raid_cfg)
 */
static int
raid_bdev_alloc_base_bdev_resource(struct raid_bdev *raid_bdev, struct spdk_bdev *bdev,
				   uint32_t base_bdev_slot)
				   uint8_t base_bdev_slot)
{
	struct spdk_bdev_desc *desc;
	int rc;
@@ -1651,7 +1650,7 @@ raid_bdev_configure(struct raid_bdev *raid_bdev)

	blocklen = raid_bdev->base_bdev_info[0].bdev->blocklen;
	min_blockcnt = raid_bdev->base_bdev_info[0].bdev->blockcnt;
	for (uint32_t i = 1; i < raid_bdev->num_base_bdevs; i++) {
	for (uint8_t i = 1; i < raid_bdev->num_base_bdevs; i++) {
		/* Calculate minimum block count from all base bdevs */
		if (raid_bdev->base_bdev_info[i].bdev->blockcnt < min_blockcnt) {
			min_blockcnt = raid_bdev->base_bdev_info[i].bdev->blockcnt;
@@ -1768,10 +1767,10 @@ raid_bdev_deconfigure(struct raid_bdev *raid_bdev, raid_bdev_destruct_cb cb_fn,
 */
static bool
raid_bdev_find_by_base_bdev(struct spdk_bdev *base_bdev, struct raid_bdev **_raid_bdev,
			    uint16_t *_base_bdev_slot)
			    uint8_t *_base_bdev_slot)
{
	struct raid_bdev	*raid_bdev;
	uint16_t		i;
	uint8_t			i;

	TAILQ_FOREACH(raid_bdev, &g_raid_bdev_list, global_link) {
		for (i = 0; i < raid_bdev->num_base_bdevs; i++) {
@@ -1801,7 +1800,7 @@ raid_bdev_remove_base_bdev(void *ctx)
{
	struct spdk_bdev	*base_bdev = ctx;
	struct raid_bdev	*raid_bdev = NULL;
	uint16_t		base_bdev_slot = 0;
	uint8_t			base_bdev_slot = 0;

	SPDK_DEBUGLOG(SPDK_LOG_BDEV_RAID, "raid_bdev_remove_base_bdev\n");

@@ -1916,7 +1915,7 @@ raid_bdev_remove_base_devices(struct raid_bdev_config *raid_cfg,
 */
static int
raid_bdev_add_base_device(struct raid_bdev_config *raid_cfg, struct spdk_bdev *bdev,
			  uint32_t base_bdev_slot)
			  uint8_t base_bdev_slot)
{
	struct raid_bdev	*raid_bdev;
	int			rc;
@@ -2003,7 +2002,7 @@ static void
raid_bdev_examine(struct spdk_bdev *bdev)
{
	struct raid_bdev_config	*raid_cfg;
	uint32_t		base_bdev_slot;
	uint8_t			base_bdev_slot;

	if (raid_bdev_can_claim_bdev(bdev->name, &raid_cfg, &base_bdev_slot)) {
		raid_bdev_add_base_device(raid_cfg, bdev, base_bdev_slot);
+16 −16
Original line number Diff line number Diff line
@@ -117,10 +117,10 @@ struct raid_bdev {
	enum raid_bdev_state		state;

	/* number of base bdevs comprising raid bdev  */
	uint16_t                    num_base_bdevs;
	uint8_t				num_base_bdevs;

	/* number of base bdevs discovered */
	uint16_t                    num_base_bdevs_discovered;
	uint8_t				num_base_bdevs_discovered;

	/* Raid Level of this raid bdev */
	uint8_t				raid_level;
@@ -229,7 +229,7 @@ void raid_bdev_remove_base_devices(struct raid_bdev_config *raid_cfg,
int raid_bdev_config_add(const char *raid_name, uint32_t strip_size, uint8_t num_base_bdevs,
			 uint8_t raid_level, struct raid_bdev_config **_raid_cfg);
int raid_bdev_config_add_base_bdev(struct raid_bdev_config *raid_cfg,
				   const char *base_bdev_name, uint32_t slot);
				   const char *base_bdev_name, uint8_t slot);
void raid_bdev_config_cleanup(struct raid_bdev_config *raid_cfg);
struct raid_bdev_config *raid_bdev_config_find_by_name(const char *raid_name);

+24 −24
Original line number Diff line number Diff line
@@ -209,7 +209,7 @@ check_and_remove_raid_bdev(struct raid_bdev_config *raid_cfg)
		return;
	}

	for (uint32_t i = 0; i < raid_bdev->num_base_bdevs; i++) {
	for (uint8_t i = 0; i < raid_bdev->num_base_bdevs; i++) {
		assert(raid_bdev->base_bdev_info != NULL);
		if (raid_bdev->base_bdev_info[i].bdev) {
			raid_bdev_free_base_bdev_resource(raid_bdev, i);
@@ -642,7 +642,7 @@ static void
verify_reset_io(struct spdk_bdev_io *bdev_io, uint8_t num_base_drives,
		struct raid_bdev_io_channel *ch_ctx, struct raid_bdev *raid_bdev, uint32_t io_status)
{
	uint32_t index = 0;
	uint8_t index = 0;

	SPDK_CU_ASSERT_FATAL(raid_bdev != NULL);
	SPDK_CU_ASSERT_FATAL(num_base_drives != 0);
@@ -669,7 +669,7 @@ verify_io(struct spdk_bdev_io *bdev_io, uint8_t num_base_drives,
	uint32_t splits_reqd = (end_strip - start_strip + 1);
	uint32_t strip;
	uint64_t pd_strip;
	uint64_t pd_idx;
	uint8_t pd_idx;
	uint32_t offset_in_strip;
	uint64_t pd_lba;
	uint64_t pd_blocks;
@@ -724,12 +724,12 @@ verify_io_without_payload(struct spdk_bdev_io *bdev_io, uint8_t num_base_drives,
	uint64_t start_strip = bdev_io->u.bdev.offset_blocks >> strip_shift;
	uint64_t end_strip = (bdev_io->u.bdev.offset_blocks + bdev_io->u.bdev.num_blocks - 1) >>
			     strip_shift;
	uint32_t n_disks_involved;
	uint8_t n_disks_involved;
	uint64_t start_strip_disk_idx;
	uint64_t end_strip_disk_idx;
	uint64_t nblocks_in_start_disk;
	uint64_t offset_in_start_disk;
	uint32_t disk_idx;
	uint8_t disk_idx;
	uint64_t base_io_idx;
	uint64_t sum_nblocks = 0;

@@ -866,7 +866,7 @@ static void
verify_raid_config(struct rpc_construct_raid_bdev *r, bool presence)
{
	struct raid_bdev_config *raid_cfg = NULL;
	uint32_t i;
	uint8_t i;
	int val;

	TAILQ_FOREACH(raid_cfg, &g_raid_config.raid_bdev_config_head, link) {
@@ -899,7 +899,7 @@ static void
verify_raid_bdev(struct rpc_construct_raid_bdev *r, bool presence, uint32_t raid_state)
{
	struct raid_bdev *pbdev;
	uint32_t i;
	uint8_t i;
	struct spdk_bdev *bdev = NULL;
	bool   pbdev_found;
	uint64_t min_blockcnt = 0xFFFFFFFFFFFFFFFF;
@@ -1029,7 +1029,7 @@ verify_get_raids(struct rpc_construct_raid_bdev *construct_req,
		 uint8_t g_max_raids,
		 char **g_get_raids_output, uint32_t g_get_raids_count)
{
	uint32_t i, j;
	uint8_t i, j;
	bool found;

	CU_ASSERT(g_max_raids == g_get_raids_count);
@@ -1050,7 +1050,7 @@ verify_get_raids(struct rpc_construct_raid_bdev *construct_req,
static void
create_base_bdevs(uint32_t bbdev_start_idx)
{
	uint32_t i;
	uint8_t i;
	struct spdk_bdev *base_bdev;
	char name[16];
	uint16_t num_chars;
@@ -1069,13 +1069,13 @@ create_base_bdevs(uint32_t bbdev_start_idx)
}

static void
create_test_req(struct rpc_construct_raid_bdev *r, const char *raid_name, uint32_t bbdev_start_idx,
create_test_req(struct rpc_construct_raid_bdev *r, const char *raid_name, uint8_t bbdev_start_idx,
		bool create_base_bdev)
{
	uint32_t i;
	uint8_t i;
	char name[16];
	uint16_t num_chars;
	uint32_t bbdev_idx = bbdev_start_idx;
	uint8_t bbdev_idx = bbdev_start_idx;

	r->name = strdup(raid_name);
	SPDK_CU_ASSERT_FATAL(r->name != NULL);
@@ -1363,7 +1363,7 @@ test_io_channel(void)
	struct rpc_destroy_raid_bdev destroy_req;
	struct raid_bdev *pbdev;
	struct raid_bdev_io_channel *ch_ctx;
	uint32_t i;
	uint8_t i;

	set_globals();
	create_test_req(&req, "raid1", 0, true);
@@ -1421,7 +1421,7 @@ test_write_io(void)
	struct raid_bdev *pbdev;
	struct spdk_io_channel *ch;
	struct raid_bdev_io_channel *ch_ctx;
	uint32_t i;
	uint8_t i;
	struct spdk_bdev_io *bdev_io;
	uint64_t io_len;
	uint64_t lba = 0;
@@ -1498,7 +1498,7 @@ test_read_io(void)
	struct raid_bdev *pbdev;
	struct spdk_io_channel *ch;
	struct raid_bdev_io_channel *ch_ctx;
	uint32_t i;
	uint8_t i;
	struct spdk_bdev_io *bdev_io;
	uint64_t io_len;
	uint64_t lba;
@@ -1650,7 +1650,7 @@ test_unmap_io(void)
	struct raid_bdev *pbdev;
	struct spdk_io_channel *ch;
	struct raid_bdev_io_channel *ch_ctx;
	uint32_t i;
	uint8_t i;
	struct spdk_bdev_io *bdev_io;
	uint32_t count;
	uint64_t io_len;
@@ -1732,7 +1732,7 @@ test_io_failure(void)
	struct raid_bdev *pbdev;
	struct spdk_io_channel *ch;
	struct raid_bdev_io_channel *ch_ctx;
	uint32_t i;
	uint8_t i;
	struct spdk_bdev_io *bdev_io;
	uint32_t count;
	uint64_t io_len;
@@ -1829,7 +1829,7 @@ test_reset_io(void)
	struct raid_bdev *pbdev;
	struct spdk_io_channel *ch;
	struct raid_bdev_io_channel *ch_ctx;
	uint32_t i;
	uint8_t i;
	struct spdk_bdev_io *bdev_io;

	set_globals();
@@ -1905,7 +1905,7 @@ test_io_waitq(void)
	struct raid_bdev *pbdev;
	struct spdk_io_channel *ch;
	struct raid_bdev_io_channel *ch_ctx;
	uint32_t i;
	uint8_t i;
	struct spdk_bdev_io *bdev_io;
	struct spdk_bdev_io *bdev_io_next;
	uint32_t count;
@@ -1994,10 +1994,10 @@ test_multi_raid_no_io(void)
	struct rpc_construct_raid_bdev *construct_req;
	struct rpc_destroy_raid_bdev destroy_req;
	struct rpc_get_raid_bdevs get_raids_req;
	uint32_t i;
	uint8_t i;
	char name[16];
	uint32_t count;
	uint32_t bbdev_idx = 0;
	uint8_t bbdev_idx = 0;

	set_globals();
	construct_req = calloc(MAX_RAIDS, sizeof(struct rpc_construct_raid_bdev));
@@ -2129,10 +2129,10 @@ test_multi_raid_with_io(void)
{
	struct rpc_construct_raid_bdev *construct_req;
	struct rpc_destroy_raid_bdev destroy_req;
	uint32_t i, j;
	uint8_t i, j;
	char name[16];
	uint32_t count;
	uint32_t bbdev_idx = 0;
	uint8_t bbdev_idx = 0;
	struct raid_bdev *pbdev;
	struct spdk_io_channel *ch;
	struct raid_bdev_io_channel *ch_ctx;
@@ -2251,7 +2251,7 @@ test_create_raid_from_config(void)
	struct rpc_destroy_raid_bdev destroy_req;
	bool can_claim;
	struct raid_bdev_config *raid_cfg;
	uint32_t base_bdev_slot;
	uint8_t base_bdev_slot;

	set_globals();
	create_test_req(&req, "raid1", 0, true);