bdevperf: Replace spdk_bdev_first/next_leaf() by spdk_for_each_bdev_leaf()

Replace all spdk_bdev_first/next_leaf() calls by spdk_for_each_bdev_leaf().

Signed-off-by: Shuhei Matsumoto <smatsumoto@nvidia.com>
Change-Id: I61e8302346a70b0dc219fff29b06158b542dd87f
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/16537
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@nvidia.com>
This commit is contained in:
Shuhei Matsumoto 2023-01-27 10:32:47 +09:00 committed by Tomasz Zawadzki
parent 9ef9d4bd23
commit 5647948681

View File

@ -1393,34 +1393,40 @@ bdevperf_histogram_status_cb(void *cb_arg, int status)
static uint32_t g_construct_job_count = 0;
static int
_bdevperf_enable_histogram(void *ctx, struct spdk_bdev *bdev)
{
bool *enable = ctx;
g_bdev_count++;
spdk_bdev_histogram_enable(bdev, bdevperf_histogram_status_cb, NULL, *enable);
return 0;
}
static void
_bdevperf_enable_histogram(bool enable)
bdevperf_enable_histogram(bool enable)
{
struct spdk_bdev *bdev;
int rc;
/* increment initial g_bdev_count so that it will never reach 0 in the middle of iteration */
g_bdev_count = 1;
if (g_job_bdev_name != NULL) {
bdev = spdk_bdev_get_by_name(g_job_bdev_name);
if (bdev) {
g_bdev_count++;
spdk_bdev_histogram_enable(bdev, bdevperf_histogram_status_cb, NULL, enable);
rc = _bdevperf_enable_histogram(&enable, bdev);
} else {
fprintf(stderr, "Unable to find bdev '%s'\n", g_job_bdev_name);
rc = -1;
}
} else {
bdev = spdk_bdev_first_leaf();
while (bdev != NULL) {
g_bdev_count++;
spdk_bdev_histogram_enable(bdev, bdevperf_histogram_status_cb, NULL, enable);
bdev = spdk_bdev_next_leaf(bdev);
}
rc = spdk_for_each_bdev_leaf(&enable, _bdevperf_enable_histogram);
}
bdevperf_histogram_status_cb(NULL, 0);
bdevperf_histogram_status_cb(NULL, rc);
}
static void
@ -1434,7 +1440,7 @@ _bdevperf_construct_job_done(void *ctx)
}
/* always enable histogram. */
_bdevperf_enable_histogram(true);
bdevperf_enable_histogram(true);
} else if (g_run_rc != 0) {
/* Reset error as some jobs constructed right */
g_run_rc = 0;
@ -1859,14 +1865,15 @@ make_cli_job_config(const char *filename, int64_t offset, uint64_t range)
}
static int
bdevperf_construct_multithread_job_config(uint32_t num_cores, struct spdk_bdev *bdev)
bdevperf_construct_multithread_job_config(void *ctx, struct spdk_bdev *bdev)
{
uint32_t *num_cores = ctx;
uint32_t i;
uint64_t blocks_per_job;
int64_t offset;
int rc;
blocks_per_job = spdk_bdev_get_num_blocks(bdev) / num_cores;
blocks_per_job = spdk_bdev_get_num_blocks(bdev) / *num_cores;
offset = 0;
SPDK_ENV_FOREACH_CORE(i) {
@ -1904,17 +1911,18 @@ bdevperf_construct_multithread_job_configs(void)
fprintf(stderr, "Unable to find bdev '%s'\n", g_job_bdev_name);
return;
}
g_run_rc = bdevperf_construct_multithread_job_config(num_cores, bdev);
g_run_rc = bdevperf_construct_multithread_job_config(&num_cores, bdev);
} else {
bdev = spdk_bdev_first_leaf();
while (bdev != NULL) {
g_run_rc = bdevperf_construct_multithread_job_config(num_cores, bdev);
if (g_run_rc) {
return;
}
bdev = spdk_bdev_next_leaf(bdev);
}
g_run_rc = spdk_for_each_bdev_leaf(&num_cores, bdevperf_construct_multithread_job_config);
}
}
static int
bdevperf_construct_job_config(void *ctx, struct spdk_bdev *bdev)
{
/* Construct the job */
return make_cli_job_config(spdk_bdev_get_name(bdev), 0, 0);
}
static void
@ -1951,17 +1959,7 @@ bdevperf_construct_job_configs(void)
fprintf(stderr, "Unable to find bdev '%s'\n", g_job_bdev_name);
}
} else {
bdev = spdk_bdev_first_leaf();
while (bdev != NULL) {
/* Construct the job */
g_run_rc = make_cli_job_config(spdk_bdev_get_name(bdev), 0, 0);
if (g_run_rc) {
break;
}
bdev = spdk_bdev_next_leaf(bdev);
}
g_run_rc = spdk_for_each_bdev_leaf(NULL, bdevperf_construct_job_config);
}
end: