From 9ef9d4bd233eaed30b8161a4354c5dd5350439f2 Mon Sep 17 00:00:00 2001 From: Shuhei Matsumoto Date: Fri, 20 Jan 2023 13:37:08 +0900 Subject: [PATCH] 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 Change-Id: Ib4df53af8b1bba5b012e93ff9d00c4089cca774e Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/16536 Tested-by: SPDK CI Jenkins Reviewed-by: Jim Harris Reviewed-by: Aleksey Marchuk --- examples/bdev/bdevperf/bdevperf.c | 55 ++++++++++++++++--------------- 1 file changed, 28 insertions(+), 27 deletions(-) diff --git a/examples/bdev/bdevperf/bdevperf.c b/examples/bdev/bdevperf/bdevperf.c index ef8ba8467..0543706c2 100644 --- a/examples/bdev/bdevperf/bdevperf.c +++ b/examples/bdev/bdevperf/bdevperf.c @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: BSD-3-Clause * Copyright (C) 2016 Intel Corporation. - * Copyright (c) 2022 NVIDIA CORPORATION & AFFILIATES. + * Copyright (c) 2022-2023 NVIDIA CORPORATION & AFFILIATES. * All rights reserved. */ @@ -1858,14 +1858,35 @@ make_cli_job_config(const char *filename, int64_t offset, uint64_t range) 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 bdevperf_construct_multithread_job_configs(void) { struct spdk_bdev *bdev; uint32_t i; uint32_t num_cores; - uint64_t blocks_per_job; - int64_t offset; num_cores = 0; 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); return; } - - 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; - } + g_run_rc = bdevperf_construct_multithread_job_config(num_cores, bdev); } else { bdev = spdk_bdev_first_leaf(); while (bdev != NULL) { - 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(spdk_bdev_get_name(bdev), - offset, blocks_per_job); - if (g_run_rc) { - return; - } - - offset += blocks_per_job; + g_run_rc = bdevperf_construct_multithread_job_config(num_cores, bdev); + if (g_run_rc) { + return; } - bdev = spdk_bdev_next_leaf(bdev); } }