module/raid: remove redundant raid_bdev lists

Those lists match exactly the values of raid_bdev->state.

Signed-off-by: Artur Paszkiewicz <artur.paszkiewicz@intel.com>
Change-Id: I0e7fb84ef77036608afd3a71318032f536bff4e8
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/14187
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Mellanox Build Bot
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Shuhei Matsumoto <smatsumoto@nvidia.com>
Reviewed-by: Krzysztof Karas <krzysztof.karas@intel.com>
Reviewed-by: Paul Luse <paul.e.luse@intel.com>
This commit is contained in:
Artur Paszkiewicz 2022-08-23 12:52:55 +02:00 committed by Tomasz Zawadzki
parent 29784f35cd
commit 12ed89aca6
4 changed files with 8 additions and 82 deletions

View File

@ -20,23 +20,8 @@ struct raid_config g_raid_config = {
.raid_bdev_config_head = TAILQ_HEAD_INITIALIZER(g_raid_config.raid_bdev_config_head),
};
/*
* List of raid bdev in configured list, these raid bdevs are registered with
* bdev layer
*/
struct raid_configured_tailq g_raid_bdev_configured_list = TAILQ_HEAD_INITIALIZER(
g_raid_bdev_configured_list);
/* List of raid bdev in configuring list */
struct raid_configuring_tailq g_raid_bdev_configuring_list = TAILQ_HEAD_INITIALIZER(
g_raid_bdev_configuring_list);
/* List of all raid bdevs */
struct raid_all_tailq g_raid_bdev_list = TAILQ_HEAD_INITIALIZER(g_raid_bdev_list);
/* List of all raid bdevs that are offline */
struct raid_offline_tailq g_raid_bdev_offline_list = TAILQ_HEAD_INITIALIZER(
g_raid_bdev_offline_list);
struct raid_all_tailq g_raid_bdev_list = TAILQ_HEAD_INITIALIZER(g_raid_bdev_list);
static TAILQ_HEAD(, raid_bdev_module) g_raid_modules = TAILQ_HEAD_INITIALIZER(g_raid_modules);
@ -190,13 +175,7 @@ raid_bdev_cleanup(struct raid_bdev *raid_bdev)
SPDK_DEBUGLOG(bdev_raid, "raid_bdev_cleanup, %p name %s, state %u, config %p\n",
raid_bdev,
raid_bdev->bdev.name, raid_bdev->state, raid_bdev->config);
if (raid_bdev->state == RAID_BDEV_STATE_CONFIGURING) {
TAILQ_REMOVE(&g_raid_bdev_configuring_list, raid_bdev, state_link);
} else if (raid_bdev->state == RAID_BDEV_STATE_OFFLINE) {
TAILQ_REMOVE(&g_raid_bdev_offline_list, raid_bdev, state_link);
} else {
assert(0);
}
assert(raid_bdev->state != RAID_BDEV_STATE_ONLINE);
TAILQ_REMOVE(&g_raid_bdev_list, raid_bdev, global_link);
free(raid_bdev->base_bdev_info);
if (raid_bdev->config) {
@ -315,9 +294,7 @@ raid_bdev_destruct(void *ctxt)
}
if (g_shutdown_started) {
TAILQ_REMOVE(&g_raid_bdev_configured_list, raid_bdev, state_link);
raid_bdev->state = RAID_BDEV_STATE_OFFLINE;
TAILQ_INSERT_TAIL(&g_raid_bdev_offline_list, raid_bdev, state_link);
}
if (raid_bdev->module->stop != NULL) {
@ -1134,7 +1111,6 @@ raid_bdev_create(struct raid_bdev_config *raid_cfg)
raid_bdev_gen->module = &g_raid_if;
raid_bdev_gen->write_cache = 0;
TAILQ_INSERT_TAIL(&g_raid_bdev_configuring_list, raid_bdev, state_link);
TAILQ_INSERT_TAIL(&g_raid_bdev_list, raid_bdev, global_link);
raid_cfg->raid_bdev = raid_bdev;
@ -1262,8 +1238,6 @@ raid_bdev_configure(struct raid_bdev *raid_bdev)
return rc;
}
SPDK_DEBUGLOG(bdev_raid, "raid bdev generic %p\n", raid_bdev_gen);
TAILQ_REMOVE(&g_raid_bdev_configuring_list, raid_bdev, state_link);
TAILQ_INSERT_TAIL(&g_raid_bdev_configured_list, raid_bdev, state_link);
SPDK_DEBUGLOG(bdev_raid, "raid bdev is created with name %s, raid_bdev %p\n",
raid_bdev_gen->name, raid_bdev);
@ -1294,10 +1268,8 @@ raid_bdev_deconfigure(struct raid_bdev *raid_bdev, raid_bdev_destruct_cb cb_fn,
}
assert(raid_bdev->num_base_bdevs == raid_bdev->num_base_bdevs_discovered);
TAILQ_REMOVE(&g_raid_bdev_configured_list, raid_bdev, state_link);
raid_bdev->state = RAID_BDEV_STATE_OFFLINE;
assert(raid_bdev->num_base_bdevs_discovered);
TAILQ_INSERT_TAIL(&g_raid_bdev_offline_list, raid_bdev, state_link);
SPDK_DEBUGLOG(bdev_raid, "raid bdev state changing from online to offline\n");
spdk_bdev_unregister(&raid_bdev->bdev, cb_fn, cb_arg);

View File

@ -94,9 +94,6 @@ struct raid_bdev {
/* raid bdev device, this will get registered in bdev layer */
struct spdk_bdev bdev;
/* link of raid bdev to link it to configured, configuring or offline list */
TAILQ_ENTRY(raid_bdev) state_link;
/* link of raid bdev to link it to global raid bdev list */
TAILQ_ENTRY(raid_bdev) global_link;
@ -207,16 +204,10 @@ struct raid_bdev_io_channel {
struct spdk_io_channel *module_channel;
};
/* TAIL heads for various raid bdev lists */
TAILQ_HEAD(raid_configured_tailq, raid_bdev);
TAILQ_HEAD(raid_configuring_tailq, raid_bdev);
/* TAIL head for raid bdev list */
TAILQ_HEAD(raid_all_tailq, raid_bdev);
TAILQ_HEAD(raid_offline_tailq, raid_bdev);
extern struct raid_configured_tailq g_raid_bdev_configured_list;
extern struct raid_configuring_tailq g_raid_bdev_configuring_list;
extern struct raid_all_tailq g_raid_bdev_list;
extern struct raid_offline_tailq g_raid_bdev_offline_list;
extern struct raid_config g_raid_config;
typedef void (*raid_bdev_destruct_cb)(void *cb_ctx, int rc);

View File

@ -86,20 +86,11 @@ rpc_bdev_raid_get_bdevs(struct spdk_jsonrpc_request *request,
spdk_json_write_array_begin(w);
/* Get raid bdev list based on the category requested */
if (strcmp(req.category, "all") == 0) {
TAILQ_FOREACH(raid_bdev, &g_raid_bdev_list, global_link) {
spdk_json_write_string(w, raid_bdev->bdev.name);
}
} else if (strcmp(req.category, "online") == 0) {
TAILQ_FOREACH(raid_bdev, &g_raid_bdev_configured_list, state_link) {
spdk_json_write_string(w, raid_bdev->bdev.name);
}
} else if (strcmp(req.category, "configuring") == 0) {
TAILQ_FOREACH(raid_bdev, &g_raid_bdev_configuring_list, state_link) {
spdk_json_write_string(w, raid_bdev->bdev.name);
}
} else {
TAILQ_FOREACH(raid_bdev, &g_raid_bdev_offline_list, state_link) {
TAILQ_FOREACH(raid_bdev, &g_raid_bdev_list, global_link) {
if (strcmp(req.category, "all") == 0 ||
(strcmp(req.category, "configuring") == 0 && raid_bdev->state == RAID_BDEV_STATE_CONFIGURING) ||
(strcmp(req.category, "online") == 0 && raid_bdev->state == RAID_BDEV_STATE_ONLINE) ||
(strcmp(req.category, "offline") == 0 && raid_bdev->state == RAID_BDEV_STATE_OFFLINE)) {
spdk_json_write_string(w, raid_bdev->bdev.name);
}
}

View File

@ -931,34 +931,6 @@ verify_raid_bdev(struct rpc_bdev_raid_create *r, bool presence, uint32_t raid_st
} else {
CU_ASSERT(pbdev_found == false);
}
pbdev_found = false;
if (raid_state == RAID_BDEV_STATE_ONLINE) {
TAILQ_FOREACH(pbdev, &g_raid_bdev_configured_list, state_link) {
if (strcmp(pbdev->bdev.name, r->name) == 0) {
pbdev_found = true;
break;
}
}
} else if (raid_state == RAID_BDEV_STATE_CONFIGURING) {
TAILQ_FOREACH(pbdev, &g_raid_bdev_configuring_list, state_link) {
if (strcmp(pbdev->bdev.name, r->name) == 0) {
pbdev_found = true;
break;
}
}
} else if (raid_state == RAID_BDEV_STATE_OFFLINE) {
TAILQ_FOREACH(pbdev, &g_raid_bdev_offline_list, state_link) {
if (strcmp(pbdev->bdev.name, r->name) == 0) {
pbdev_found = true;
break;
}
}
}
if (presence == true) {
CU_ASSERT(pbdev_found == true);
} else {
CU_ASSERT(pbdev_found == false);
}
}
static void