Commit 12ed89ac authored by Artur Paszkiewicz's avatar Artur Paszkiewicz Committed by Tomasz Zawadzki
Browse files

module/raid: remove redundant raid_bdev lists



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

Signed-off-by: default avatarArtur Paszkiewicz <artur.paszkiewicz@intel.com>
Change-Id: I0e7fb84ef77036608afd3a71318032f536bff4e8
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/14187


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Mellanox Build Bot
Reviewed-by: default avatarTomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <smatsumoto@nvidia.com>
Reviewed-by: default avatarKrzysztof Karas <krzysztof.karas@intel.com>
Reviewed-by: default avatarPaul Luse <paul.e.luse@intel.com>
parent 29784f35
Loading
Loading
Loading
Loading
+2 −30
Original line number Diff line number Diff line
@@ -20,24 +20,9 @@ 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);

static TAILQ_HEAD(, raid_bdev_module) g_raid_modules = TAILQ_HEAD_INITIALIZER(g_raid_modules);

static struct raid_bdev_module *
@@ -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);
+1 −10
Original line number Diff line number Diff line
@@ -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);
+5 −14
Original line number Diff line number Diff line
@@ -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) {
		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);
		}
	}
+0 −28
Original line number Diff line number Diff line
@@ -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