bdevperf: Factor out constructing multiple targets for a bdev into a function
Factor out constructing multiple targets for a single bdev from bdevperf_construct_targets() into an new helper function _bdevperf_construct_targets(). Then change the return type of bdevperf_construct_targets() to void and continue creating targets for subsequent bdevs even if failing for any bdev. Additionally, remove a couple of comments in the source code to avoid misunderstanding. These changes will make us easier to use spdk_for_each_channel() in bdevperf_construct_targets(). Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Change-Id: I3363931749b863c8de619939939d401f14e43d15 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/638 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
parent
4579fc9d2c
commit
ba9ce36527
@ -1005,7 +1005,6 @@ bdevperf_construct_target(struct spdk_bdev *bdev)
|
|||||||
target = malloc(sizeof(struct io_target));
|
target = malloc(sizeof(struct io_target));
|
||||||
if (!target) {
|
if (!target) {
|
||||||
fprintf(stderr, "Unable to allocate memory for new target.\n");
|
fprintf(stderr, "Unable to allocate memory for new target.\n");
|
||||||
/* Return immediately because all mallocs will presumably fail after this */
|
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1013,7 +1012,6 @@ bdevperf_construct_target(struct spdk_bdev *bdev)
|
|||||||
if (!target->name) {
|
if (!target->name) {
|
||||||
fprintf(stderr, "Unable to allocate memory for target name.\n");
|
fprintf(stderr, "Unable to allocate memory for target name.\n");
|
||||||
free(target);
|
free(target);
|
||||||
/* Return immediately because all mallocs will presumably fail after this */
|
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1074,11 +1072,10 @@ bdevperf_construct_target(struct spdk_bdev *bdev)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
bdevperf_construct_targets(void)
|
_bdevperf_construct_targets(struct spdk_bdev *bdev)
|
||||||
{
|
{
|
||||||
struct spdk_bdev *bdev;
|
|
||||||
int rc;
|
|
||||||
uint8_t core_idx, core_count_for_each_bdev;
|
uint8_t core_idx, core_count_for_each_bdev;
|
||||||
|
int rc;
|
||||||
|
|
||||||
if (g_every_core_for_each_bdev == false) {
|
if (g_every_core_for_each_bdev == false) {
|
||||||
core_count_for_each_bdev = 1;
|
core_count_for_each_bdev = 1;
|
||||||
@ -1086,34 +1083,34 @@ bdevperf_construct_targets(void)
|
|||||||
core_count_for_each_bdev = spdk_env_get_core_count();
|
core_count_for_each_bdev = spdk_env_get_core_count();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (core_idx = 0; core_idx < core_count_for_each_bdev; core_idx++) {
|
||||||
|
rc = bdevperf_construct_target(bdev);
|
||||||
|
if (rc != 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
bdevperf_construct_targets(void)
|
||||||
|
{
|
||||||
|
struct spdk_bdev *bdev;
|
||||||
|
|
||||||
if (g_target_bdev_name != NULL) {
|
if (g_target_bdev_name != NULL) {
|
||||||
bdev = spdk_bdev_get_by_name(g_target_bdev_name);
|
bdev = spdk_bdev_get_by_name(g_target_bdev_name);
|
||||||
if (!bdev) {
|
if (bdev) {
|
||||||
|
_bdevperf_construct_targets(bdev);
|
||||||
|
} else {
|
||||||
fprintf(stderr, "Unable to find bdev '%s'\n", g_target_bdev_name);
|
fprintf(stderr, "Unable to find bdev '%s'\n", g_target_bdev_name);
|
||||||
goto end;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (core_idx = 0; core_idx < core_count_for_each_bdev; core_idx++) {
|
|
||||||
rc = bdevperf_construct_target(bdev);
|
|
||||||
if (rc != 0) {
|
|
||||||
goto end;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
bdev = spdk_bdev_first_leaf();
|
bdev = spdk_bdev_first_leaf();
|
||||||
while (bdev != NULL) {
|
while (bdev != NULL) {
|
||||||
for (core_idx = 0; core_idx < core_count_for_each_bdev; core_idx++) {
|
_bdevperf_construct_targets(bdev);
|
||||||
rc = bdevperf_construct_target(bdev);
|
|
||||||
if (rc != 0) {
|
|
||||||
goto end;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bdev = spdk_bdev_next_leaf(bdev);
|
bdev = spdk_bdev_next_leaf(bdev);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
end:
|
|
||||||
bdevperf_construct_targets_tasks();
|
bdevperf_construct_targets_tasks();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user