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: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: I323aaa229a76c3d5b5361d7643c3a9591ccad340
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/464357
Reviewed-by: yidong0635 <dongx.yi@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
This commit is contained in:
Shuhei Matsumoto 2019-08-07 10:53:53 +09:00 committed by Changpeng Liu
parent 441ecc09ae
commit e5f28d5d39
3 changed files with 68 additions and 69 deletions

View File

@ -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);

View File

@ -87,49 +87,49 @@ struct raid_base_bdev_info {
*/
struct raid_bdev {
/* raid bdev device, this will get registered in bdev layer */
struct spdk_bdev bdev;
struct spdk_bdev bdev;
/* link of raid bdev to link it to configured, configuring or offline list */
TAILQ_ENTRY(raid_bdev) state_link;
TAILQ_ENTRY(raid_bdev) state_link;
/* link of raid bdev to link it to global raid bdev list */
TAILQ_ENTRY(raid_bdev) global_link;
TAILQ_ENTRY(raid_bdev) global_link;
/* pointer to config file entry */
struct raid_bdev_config *config;
struct raid_bdev_config *config;
/* array of base bdev info */
struct raid_base_bdev_info *base_bdev_info;
struct raid_base_bdev_info *base_bdev_info;
/* strip size of raid bdev in blocks */
uint32_t strip_size;
uint32_t strip_size;
/* strip size of raid bdev in KB */
uint32_t strip_size_kb;
uint32_t strip_size_kb;
/* strip size bit shift for optimized calculation */
uint32_t strip_size_shift;
uint32_t strip_size_shift;
/* block length bit shift for optimized calculation */
uint32_t blocklen_shift;
uint32_t blocklen_shift;
/* state of raid bdev */
enum raid_bdev_state state;
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;
uint8_t raid_level;
/* Set to true if destruct is called for this raid bdev */
bool destruct_called;
bool destruct_called;
/* Set to true if destroy of this raid bdev is started. */
bool destroy_started;
bool destroy_started;
};
/*
@ -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);

View File

@ -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);