Commit a7421273 authored by Shuhei Matsumoto's avatar Shuhei Matsumoto Committed by Ben Walker
Browse files

bdev/raid: Use raid_cfg as a pointer to raid_bdev_config throughout



In bdev_raid.c and bdev_raid_rpc.c, to hold a pointer to
raid_bdev_config, some have used raid_cfg and other have used
raid_bdev_config.

raid_bdev_config is the name of the struct and using the name of
the struct as a pointer to it may cause any confusion.

Change-Id: Ic87ff04d58ea46c30081aaae8d9cda5a53135be9
Signed-off-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-on: https://review.gerrithub.io/422922


Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarKunal Sablok <kunal.sablok@intel.com>
parent ab9661c9
Loading
Loading
Loading
Loading
+20 −20
Original line number Diff line number Diff line
@@ -789,7 +789,7 @@ static const struct spdk_bdev_fn_table g_raid_bdev_fn_table = {
 * brief:
 * raid_bdev_config_cleanup function is used to free memory for one raid_bdev in configuration
 * params:
 * raid_bdev_config - pointer to raid_bdev_config structure
 * raid_cfg - pointer to raid_bdev_config structure
 * returns:
 * none
 */
@@ -840,11 +840,11 @@ raid_bdev_free(void)
 * strip_size - strip size in KB
 * num_base_bdevs - number of base bdevs.
 * raid_level - raid level, only raid level 0 is supported.
 * _raid_bdev_config - Pointer to newly added configuration
 * _raid_cfg - Pointer to newly added configuration
 */
int
raid_bdev_config_add(const char *raid_name, int strip_size, int num_base_bdevs,
		     int raid_level, struct raid_bdev_config **_raid_bdev_config)
		     int raid_level, struct raid_bdev_config **_raid_cfg)
{
	struct raid_bdev_config *raid_cfg;

@@ -883,7 +883,7 @@ raid_bdev_config_add(const char *raid_name, int strip_size, int num_base_bdevs,
	TAILQ_INSERT_TAIL(&g_spdk_raid_config.raid_bdev_config_head, raid_cfg, link);
	g_spdk_raid_config.total_raid_bdev++;

	*_raid_bdev_config = raid_cfg;
	*_raid_cfg = raid_cfg;
	return 0;
}

@@ -960,7 +960,7 @@ raid_bdev_parse_raid(struct spdk_conf_section *conf_section)
	int i, num_base_bdevs;
	int raid_level;
	const char *base_bdev_name;
	struct raid_bdev_config *raid_bdev_config;
	struct raid_bdev_config *raid_cfg;
	int rc;

	raid_name = spdk_conf_section_get_val(conf_section, "Name");
@@ -988,7 +988,7 @@ raid_bdev_parse_raid(struct spdk_conf_section *conf_section)
		      raid_level);

	rc = raid_bdev_config_add(raid_name, strip_size, num_base_bdevs, raid_level,
				  &raid_bdev_config);
				  &raid_cfg);
	if (rc != 0) {
		SPDK_ERRLOG("Failed to add raid bdev config\n");
		return rc;
@@ -1000,21 +1000,21 @@ raid_bdev_parse_raid(struct spdk_conf_section *conf_section)
			break;
		}
		if (i >= num_base_bdevs) {
			raid_bdev_config_cleanup(raid_bdev_config);
			raid_bdev_config_cleanup(raid_cfg);
			SPDK_ERRLOG("Number of devices mentioned is more than count\n");
			return -1;
		}

		rc = raid_bdev_config_add_base_bdev(raid_bdev_config, base_bdev_name, i);
		rc = raid_bdev_config_add_base_bdev(raid_cfg, base_bdev_name, i);
		if (rc != 0) {
			raid_bdev_config_cleanup(raid_bdev_config);
			raid_bdev_config_cleanup(raid_cfg);
			SPDK_ERRLOG("Failed to add base bdev to raid bdev config\n");
			return rc;
		}
	}

	if (i != raid_bdev_config->num_base_bdevs) {
		raid_bdev_config_cleanup(raid_bdev_config);
	if (i != raid_cfg->num_base_bdevs) {
		raid_bdev_config_cleanup(raid_cfg);
		SPDK_ERRLOG("Number of devices mentioned is less than count\n");
		return -1;
	}
@@ -1106,7 +1106,7 @@ raid_bdev_get_ctx_size(void)
 * claimed by raid bdev or not.
 * params:
 * bdev_name - represents base bdev name
 * raid_bdev_config - pointer to raid bdev config parsed from config file
 * _raid_cfg - pointer to raid bdev config parsed from config file
 * base_bdev_slot - if bdev can be claimed, it represents the base_bdev correct
 * slot. This field is only valid if return value of this function is true
 * returns:
@@ -1114,7 +1114,7 @@ raid_bdev_get_ctx_size(void)
 * false - if bdev can't be claimed
 */
static bool
raid_bdev_can_claim_bdev(const char *bdev_name, struct raid_bdev_config **raid_bdev_config,
raid_bdev_can_claim_bdev(const char *bdev_name, struct raid_bdev_config **_raid_cfg,
			 uint32_t *base_bdev_slot)
{
	bool rv = false;
@@ -1129,7 +1129,7 @@ raid_bdev_can_claim_bdev(const char *bdev_name, struct raid_bdev_config **raid_b
			 * this base bdev should be inserted in raid bdev
			 */
			if (!strcmp(bdev_name, raid_cfg->base_bdev[i].bdev_name)) {
				*raid_bdev_config = raid_cfg;
				*_raid_cfg = raid_cfg;
				*base_bdev_slot = i;
				rv = true;
				break;;
@@ -1463,7 +1463,7 @@ raid_bdev_remove_base_bdev(void *ctx)
int
raid_bdev_add_base_device(struct spdk_bdev *bdev)
{
	struct raid_bdev_config	*raid_bdev_config = NULL;
	struct raid_bdev_config	*raid_cfg = NULL;
	struct raid_bdev	*raid_bdev;
	uint32_t		base_bdev_slot;
	bool			can_claim;
@@ -1471,22 +1471,22 @@ raid_bdev_add_base_device(struct spdk_bdev *bdev)

	SPDK_DEBUGLOG(SPDK_LOG_BDEV_RAID, "raid_bdev_examine %p\n", bdev);

	can_claim = raid_bdev_can_claim_bdev(bdev->name, &raid_bdev_config, &base_bdev_slot);
	can_claim = raid_bdev_can_claim_bdev(bdev->name, &raid_cfg, &base_bdev_slot);

	if (!can_claim) {
		SPDK_DEBUGLOG(SPDK_LOG_BDEV_RAID, "bdev %s can't be claimed\n", bdev->name);
		return -1;
	}
	assert(raid_bdev_config);
	assert(raid_cfg);

	raid_bdev = raid_bdev_config->raid_bdev;
	raid_bdev = raid_cfg->raid_bdev;
	if (!raid_bdev) {
		rc = raid_bdev_create(raid_bdev_config, &raid_bdev);
		rc = raid_bdev_create(raid_cfg, &raid_bdev);
		if (rc != 0) {
			SPDK_ERRLOG("Failed to create raid bdev for bdev '%s'\n", bdev->name);
			return -1;
		}
		raid_bdev_config->raid_bdev = raid_bdev;
		raid_cfg->raid_bdev = raid_bdev;
	}

	rc = raid_bdev_alloc_base_bdev_resource(raid_bdev, bdev, base_bdev_slot);
+1 −1
Original line number Diff line number Diff line
@@ -218,7 +218,7 @@ extern struct raid_config g_spdk_raid_config;
void raid_bdev_remove_base_bdev(void *ctx);
int raid_bdev_add_base_device(struct spdk_bdev *bdev);
int raid_bdev_config_add(const char *raid_name, int strip_size, int num_base_bdevs,
			 int raid_level, struct raid_bdev_config **_raid_bdev_config);
			 int 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);
void raid_bdev_config_cleanup(struct raid_bdev_config *raid_cfg);
+24 −22
Original line number Diff line number Diff line
@@ -41,7 +41,7 @@

#define RPC_MAX_BASE_BDEVS 255

static void raid_bdev_config_destroy(struct raid_bdev_config *raid_bdev_config);
static void raid_bdev_config_destroy(struct raid_bdev_config *raid_cfg);

SPDK_LOG_REGISTER_COMPONENT("raidrpc", SPDK_LOG_RAID_RPC)

@@ -249,12 +249,12 @@ static const struct spdk_json_object_decoder rpc_construct_raid_bdev_decoders[]
 * non NULL - raid present, returns raid_bdev
 */
static void
check_and_remove_raid_bdev(struct raid_bdev_config *raid_bdev_config)
check_and_remove_raid_bdev(struct raid_bdev_config *raid_cfg)
{
	struct raid_bdev       *raid_bdev;

	/* Get the raid structured allocated if exists */
	raid_bdev = raid_bdev_config->raid_bdev;
	raid_bdev = raid_cfg->raid_bdev;
	if (raid_bdev == NULL) {
		return;
	}
@@ -282,7 +282,7 @@ check_and_remove_raid_bdev(struct raid_bdev_config *raid_bdev_config)
	TAILQ_REMOVE(&g_spdk_raid_bdev_list, raid_bdev, link_global_list);
	free(raid_bdev->base_bdev_info);
	free(raid_bdev);
	raid_bdev_config->raid_bdev = NULL;
	raid_cfg->raid_bdev = NULL;
}

/*
@@ -301,7 +301,7 @@ spdk_rpc_construct_raid_bdev(struct spdk_jsonrpc_request *request,
{
	struct rpc_construct_raid_bdev req = {};
	struct spdk_json_write_ctx     *w;
	struct raid_bdev_config        *raid_bdev_config;
	struct raid_bdev_config        *raid_cfg;
	struct raid_bdev               *raid_bdev;
	struct spdk_bdev               *base_bdev;
	int			       rc;
@@ -337,7 +337,7 @@ spdk_rpc_construct_raid_bdev(struct spdk_jsonrpc_request *request,
	}

	rc = raid_bdev_config_add(req.name, req.strip_size, req.base_bdevs.num_base_bdevs, req.raid_level,
				  &raid_bdev_config);
				  &raid_cfg);
	if (rc != 0) {
		spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INTERNAL_ERROR, spdk_strerror(-rc));
		free_rpc_construct_raid_bdev(&req);
@@ -345,21 +345,21 @@ spdk_rpc_construct_raid_bdev(struct spdk_jsonrpc_request *request,
	}

	for (size_t i = 0; i < req.base_bdevs.num_base_bdevs; i++) {
		rc = raid_bdev_config_add_base_bdev(raid_bdev_config, req.base_bdevs.base_bdevs[i], i);
		rc = raid_bdev_config_add_base_bdev(raid_cfg, req.base_bdevs.base_bdevs[i], i);
		if (rc != 0) {
			raid_bdev_config_cleanup(raid_bdev_config);
			raid_bdev_config_cleanup(raid_cfg);
			spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INTERNAL_ERROR, spdk_strerror(-rc));
			free_rpc_construct_raid_bdev(&req);
			return;
		}
	}

	for (size_t i = 0; i < raid_bdev_config->num_base_bdevs; i++) {
	for (size_t i = 0; i < raid_cfg->num_base_bdevs; i++) {
		/* Check if base_bdev exists already, if not fail the command */
		base_bdev = spdk_bdev_get_by_name(req.base_bdevs.base_bdevs[i]);
		if (base_bdev == NULL) {
			check_and_remove_raid_bdev(raid_bdev_config);
			raid_bdev_config_cleanup(raid_bdev_config);
			check_and_remove_raid_bdev(raid_cfg);
			raid_bdev_config_cleanup(raid_cfg);
			spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INTERNAL_ERROR, "base bdev not found");
			free_rpc_construct_raid_bdev(&req);
			return;
@@ -371,8 +371,8 @@ spdk_rpc_construct_raid_bdev(struct spdk_jsonrpc_request *request,
		 * by some other module
		 */
		if (raid_bdev_add_base_device(base_bdev)) {
			check_and_remove_raid_bdev(raid_bdev_config);
			raid_bdev_config_cleanup(raid_bdev_config);
			check_and_remove_raid_bdev(raid_cfg);
			raid_bdev_config_cleanup(raid_cfg);
			spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INTERNAL_ERROR,
							 "base bdev can't be added because of either memory allocation failed or not able to claim");
			free_rpc_construct_raid_bdev(&req);
@@ -439,7 +439,8 @@ raid_bdev_config_destroy_check_raid_bdev_exists(void *arg)
	assert(raid_cfg != NULL);
	if (raid_cfg->raid_bdev != NULL) {
		/* If raid bdev still exists, schedule event and come back later */
		spdk_thread_send_msg(spdk_get_thread(), raid_bdev_config_destroy_check_raid_bdev_exists, raid_cfg);
		spdk_thread_send_msg(spdk_get_thread(), raid_bdev_config_destroy_check_raid_bdev_exists,
				     raid_cfg);
		return;
	} else {
		/* If raid bdev does not exist now, go for raid bdev config cleanup */
@@ -464,7 +465,8 @@ raid_bdev_config_destroy(struct raid_bdev_config *raid_cfg)
		 * If raid bdev exists for this config, wait for raid bdev to get
		 * destroyed and come back later
		 */
		spdk_thread_send_msg(spdk_get_thread(), raid_bdev_config_destroy_check_raid_bdev_exists, raid_cfg);
		spdk_thread_send_msg(spdk_get_thread(), raid_bdev_config_destroy_check_raid_bdev_exists,
				     raid_cfg);
		return;
	}

@@ -487,7 +489,7 @@ spdk_rpc_destroy_raid_bdev(struct spdk_jsonrpc_request *request, const struct sp
{
	struct rpc_destroy_raid_bdev req = {};
	struct spdk_json_write_ctx   *w;
	struct raid_bdev_config      *raid_bdev_config = NULL;
	struct raid_bdev_config      *raid_cfg = NULL;
	struct spdk_bdev             *base_bdev;

	if (spdk_json_decode_object(params, rpc_destroy_raid_bdev_decoders,
@@ -499,13 +501,13 @@ spdk_rpc_destroy_raid_bdev(struct spdk_jsonrpc_request *request, const struct sp
	}

	/* Find raid bdev config for this raid bdev */
	TAILQ_FOREACH(raid_bdev_config, &g_spdk_raid_config.raid_bdev_config_head, link) {
		if (strcmp(raid_bdev_config->name, req.name) == 0) {
	TAILQ_FOREACH(raid_cfg, &g_spdk_raid_config.raid_bdev_config_head, link) {
		if (strcmp(raid_cfg->name, req.name) == 0) {
			break;
		}
	}

	if (raid_bdev_config == NULL) {
	if (raid_cfg == NULL) {
		spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INVALID_PARAMS,
						 "raid bdev name not found");
		free_rpc_destroy_raid_bdev(&req);
@@ -513,8 +515,8 @@ spdk_rpc_destroy_raid_bdev(struct spdk_jsonrpc_request *request, const struct sp
	}

	/* Remove all the base bdevs from this raid bdev before destroying the raid bdev */
	for (uint32_t i = 0; i < raid_bdev_config->num_base_bdevs; i++) {
		base_bdev = spdk_bdev_get_by_name(raid_bdev_config->base_bdev[i].bdev_name);
	for (uint32_t i = 0; i < raid_cfg->num_base_bdevs; i++) {
		base_bdev = spdk_bdev_get_by_name(raid_cfg->base_bdev[i].bdev_name);
		if (base_bdev != NULL) {
			raid_bdev_remove_base_bdev(base_bdev);
		}
@@ -524,7 +526,7 @@ spdk_rpc_destroy_raid_bdev(struct spdk_jsonrpc_request *request, const struct sp
	 * Call to destroy the raid bdev, but it will only destroy raid bdev if underlying
	 * cleanup is done
	 */
	raid_bdev_config_destroy(raid_bdev_config);
	raid_bdev_config_destroy(raid_cfg);

	free_rpc_destroy_raid_bdev(&req);