bdev/raid: Factor out RAID parameter check of JSON RPC and config file

RAID parameter check operation of JSON RPC and config file are
duplicated now. This refactoring is one of small preparation to
extend RAID bdev to other RAID levels.

Change-Id: I88527bc9bd0b3a3392aba7d0008a53d518027bfa
Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-on: https://review.gerrithub.io/422797
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Kunal Sablok <kunal.sablok@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
Shuhei Matsumoto 2018-08-21 10:29:31 +09:00 committed by Ben Walker
parent 88a1643dcc
commit 485c4b1346
2 changed files with 17 additions and 25 deletions

View File

@ -853,6 +853,22 @@ raid_bdev_config_add(const char *raid_name, int strip_size, int num_base_bdevs,
}
}
if (spdk_u32_is_pow2(strip_size) == false) {
SPDK_ERRLOG("Invalid strip size %d\n", strip_size);
return -EINVAL;
}
if (num_base_bdevs <= 0) {
SPDK_ERRLOG("Invalid base device count %d\n", num_base_bdevs);
return -EINVAL;
}
if (raid_level != 0) {
SPDK_ERRLOG("invalid raid level %d, only raid level 0 is supported\n",
raid_level);
return -EINVAL;
}
raid_cfg = calloc(1, sizeof(*raid_cfg));
if (raid_cfg == NULL) {
SPDK_ERRLOG("unable to allocate memory\n");
@ -965,21 +981,10 @@ raid_bdev_parse_raid(struct spdk_conf_section *conf_section)
SPDK_ERRLOG("raid_name %s is null\n", raid_name);
return -1;
}
strip_size = spdk_conf_section_get_intval(conf_section, "StripSize");
if (spdk_u32_is_pow2(strip_size) == false) {
SPDK_ERRLOG("Invalid strip size %d\n", strip_size);
return -1;
}
num_base_bdevs = spdk_conf_section_get_intval(conf_section, "NumDevices");
if (num_base_bdevs <= 0) {
SPDK_ERRLOG("Invalid base device count %d\n", num_base_bdevs);
return -1;
}
raid_level = spdk_conf_section_get_intval(conf_section, "RaidLevel");
if (raid_level != 0) {
SPDK_ERRLOG("invalid raid level %d, only raid level 0 is supported\n", raid_level);
return -1;
}
SPDK_DEBUGLOG(SPDK_LOG_BDEV_RAID, "%s %d %d %d\n", raid_name, strip_size, num_base_bdevs,
raid_level);

View File

@ -323,19 +323,6 @@ spdk_rpc_construct_raid_bdev(struct spdk_jsonrpc_request *request,
return;
}
/* Fail the command if input raid level is other than 0 */
if (req.raid_level != 0) {
spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INVALID_PARAMS, "invalid raid level");
free_rpc_construct_raid_bdev(&req);
return;
}
if (spdk_u32_is_pow2(req.strip_size) == false) {
spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INVALID_PARAMS, "invalid strip size");
free_rpc_construct_raid_bdev(&req);
return;
}
rc = raid_bdev_config_add(req.name, req.strip_size, req.base_bdevs.num_base_bdevs, req.raid_level,
&raid_cfg);
if (rc != 0) {