bdevperf: Factor out creating multithread job config into helper function
The next patch will replace spdk_bdev_first/next_leaf() calls by spdk_for_each_bdev(). As a preparation, factor out creating multithread job config for a bdev into a helper function. Signed-off-by: Shuhei Matsumoto <smatsumoto@nvidia.com> Change-Id: Ib4df53af8b1bba5b012e93ff9d00c4089cca774e Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/16536 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:
parent
f91ba919c5
commit
9ef9d4bd23
@ -1,6 +1,6 @@
|
|||||||
/* SPDX-License-Identifier: BSD-3-Clause
|
/* SPDX-License-Identifier: BSD-3-Clause
|
||||||
* Copyright (C) 2016 Intel Corporation.
|
* Copyright (C) 2016 Intel Corporation.
|
||||||
* Copyright (c) 2022 NVIDIA CORPORATION & AFFILIATES.
|
* Copyright (c) 2022-2023 NVIDIA CORPORATION & AFFILIATES.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -1858,14 +1858,35 @@ make_cli_job_config(const char *filename, int64_t offset, uint64_t range)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
bdevperf_construct_multithread_job_config(uint32_t num_cores, struct spdk_bdev *bdev)
|
||||||
|
{
|
||||||
|
uint32_t i;
|
||||||
|
uint64_t blocks_per_job;
|
||||||
|
int64_t offset;
|
||||||
|
int rc;
|
||||||
|
|
||||||
|
blocks_per_job = spdk_bdev_get_num_blocks(bdev) / num_cores;
|
||||||
|
offset = 0;
|
||||||
|
|
||||||
|
SPDK_ENV_FOREACH_CORE(i) {
|
||||||
|
rc = make_cli_job_config(spdk_bdev_get_name(bdev), offset, blocks_per_job);
|
||||||
|
if (rc) {
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
|
||||||
|
offset += blocks_per_job;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
bdevperf_construct_multithread_job_configs(void)
|
bdevperf_construct_multithread_job_configs(void)
|
||||||
{
|
{
|
||||||
struct spdk_bdev *bdev;
|
struct spdk_bdev *bdev;
|
||||||
uint32_t i;
|
uint32_t i;
|
||||||
uint32_t num_cores;
|
uint32_t num_cores;
|
||||||
uint64_t blocks_per_job;
|
|
||||||
int64_t offset;
|
|
||||||
|
|
||||||
num_cores = 0;
|
num_cores = 0;
|
||||||
SPDK_ENV_FOREACH_CORE(i) {
|
SPDK_ENV_FOREACH_CORE(i) {
|
||||||
@ -1883,34 +1904,14 @@ bdevperf_construct_multithread_job_configs(void)
|
|||||||
fprintf(stderr, "Unable to find bdev '%s'\n", g_job_bdev_name);
|
fprintf(stderr, "Unable to find bdev '%s'\n", g_job_bdev_name);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
g_run_rc = bdevperf_construct_multithread_job_config(num_cores, bdev);
|
||||||
blocks_per_job = spdk_bdev_get_num_blocks(bdev) / num_cores;
|
|
||||||
offset = 0;
|
|
||||||
|
|
||||||
SPDK_ENV_FOREACH_CORE(i) {
|
|
||||||
g_run_rc = make_cli_job_config(g_job_bdev_name, offset, blocks_per_job);
|
|
||||||
if (g_run_rc) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
offset += blocks_per_job;
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
bdev = spdk_bdev_first_leaf();
|
bdev = spdk_bdev_first_leaf();
|
||||||
while (bdev != NULL) {
|
while (bdev != NULL) {
|
||||||
blocks_per_job = spdk_bdev_get_num_blocks(bdev) / num_cores;
|
g_run_rc = bdevperf_construct_multithread_job_config(num_cores, bdev);
|
||||||
offset = 0;
|
if (g_run_rc) {
|
||||||
|
return;
|
||||||
SPDK_ENV_FOREACH_CORE(i) {
|
|
||||||
g_run_rc = make_cli_job_config(spdk_bdev_get_name(bdev),
|
|
||||||
offset, blocks_per_job);
|
|
||||||
if (g_run_rc) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
offset += blocks_per_job;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bdev = spdk_bdev_next_leaf(bdev);
|
bdev = spdk_bdev_next_leaf(bdev);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user