Commit ba9ce365 authored by Shuhei Matsumoto's avatar Shuhei Matsumoto Committed by Tomasz Zawadzki
Browse files

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: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: I3363931749b863c8de619939939d401f14e43d15
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/638


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarChangpeng Liu <changpeng.liu@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
parent 4579fc9d
Loading
Loading
Loading
Loading
+19 −22
Original line number Diff line number Diff line
@@ -1005,7 +1005,6 @@ bdevperf_construct_target(struct spdk_bdev *bdev)
	target = malloc(sizeof(struct io_target));
	if (!target) {
		fprintf(stderr, "Unable to allocate memory for new target.\n");
		/* Return immediately because all mallocs will presumably fail after this */
		return -ENOMEM;
	}

@@ -1013,7 +1012,6 @@ bdevperf_construct_target(struct spdk_bdev *bdev)
	if (!target->name) {
		fprintf(stderr, "Unable to allocate memory for target name.\n");
		free(target);
		/* Return immediately because all mallocs will presumably fail after this */
		return -ENOMEM;
	}

@@ -1074,11 +1072,10 @@ bdevperf_construct_target(struct spdk_bdev *bdev)
}

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;
	int rc;

	if (g_every_core_for_each_bdev == false) {
		core_count_for_each_bdev = 1;
@@ -1086,34 +1083,34 @@ bdevperf_construct_targets(void)
		core_count_for_each_bdev = spdk_env_get_core_count();
	}

	if (g_target_bdev_name != NULL) {
		bdev = spdk_bdev_get_by_name(g_target_bdev_name);
		if (!bdev) {
			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;
			return;
		}
	}
}

static void
bdevperf_construct_targets(void)
{
	struct spdk_bdev *bdev;

	if (g_target_bdev_name != NULL) {
		bdev = spdk_bdev_get_by_name(g_target_bdev_name);
		if (bdev) {
			_bdevperf_construct_targets(bdev);
		} else {
			fprintf(stderr, "Unable to find bdev '%s'\n", g_target_bdev_name);
		}
	} else {
		bdev = spdk_bdev_first_leaf();
		while (bdev != NULL) {
			for (core_idx = 0; core_idx < core_count_for_each_bdev; core_idx++) {
				rc = bdevperf_construct_target(bdev);
				if (rc != 0) {
					goto end;
				}
			}

			_bdevperf_construct_targets(bdev);
			bdev = spdk_bdev_next_leaf(bdev);
		}
	}

end:
	bdevperf_construct_targets_tasks();
}