From 19367440b6b5be400eef65e01b276d8c1b9708be Mon Sep 17 00:00:00 2001 From: Shuhei Matsumoto Date: Sun, 9 Feb 2020 21:32:54 -0500 Subject: [PATCH] bdevperf: Factor out creating tasks on group into a helper function This is a preparation to make bdevperf_construct_targets_tasks() asynchronous by using spdk_for_each_channel() in the next patch. Signed-off-by: Shuhei Matsumoto Change-Id: I76c827550b2920abcba14abd7f15a3111ad10d39 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/643 Tested-by: SPDK CI Jenkins Reviewed-by: Jim Harris Reviewed-by: Changpeng Liu --- test/bdev/bdevperf/bdevperf.c | 51 ++++++++++++++++++++++------------- 1 file changed, 32 insertions(+), 19 deletions(-) diff --git a/test/bdev/bdevperf/bdevperf.c b/test/bdev/bdevperf/bdevperf.c index a78ed3cc7..3f770da53 100644 --- a/test/bdev/bdevperf/bdevperf.c +++ b/test/bdev/bdevperf/bdevperf.c @@ -939,13 +939,35 @@ static struct bdevperf_task *bdevperf_construct_task_on_target(struct io_target return task; } +static int +bdevperf_construct_tasks_on_group(struct io_target_group *group) +{ + struct io_target *target; + struct bdevperf_task *task; + int i, task_num = g_queue_depth; + + if (g_reset) { + task_num += 1; + } + + TAILQ_FOREACH(target, &group->targets, link) { + for (i = 0; i < task_num; i++) { + task = bdevperf_construct_task_on_target(target); + if (task == NULL) { + return -1; + } + TAILQ_INSERT_TAIL(&target->task_list, task, link); + } + } + + return 0; +} + static void bdevperf_construct_targets_tasks(void) { struct io_target_group *group; - struct io_target *target; - struct bdevperf_task *task; - int i, task_num = g_queue_depth; + int rc; if (g_target_count == 0) { fprintf(stderr, "No valid bdevs found.\n"); @@ -954,24 +976,15 @@ bdevperf_construct_targets_tasks(void) return; } - if (g_reset) { - task_num += 1; - } - /* Initialize task list for each target */ TAILQ_FOREACH(group, &g_bdevperf.groups, link) { - TAILQ_FOREACH(target, &group->targets, link) { - for (i = 0; i < task_num; i++) { - task = bdevperf_construct_task_on_target(target); - if (task == NULL) { - fprintf(stderr, "Bdevperf program exits due to memory allocation issue\n"); - fprintf(stderr, "Use -d XXX to allocate more huge pages, e.g., -d 4096\n"); - g_run_rc = -1; - bdevperf_test_done(); - return; - } - TAILQ_INSERT_TAIL(&target->task_list, task, link); - } + rc = bdevperf_construct_tasks_on_group(group); + if (rc != 0) { + fprintf(stderr, "Bdevperf program exits due to memory allocation issue\n"); + fprintf(stderr, "Use -d XXX to allocate more huge pages, e.g., -d 4096\n"); + g_run_rc = rc; + bdevperf_test_done(); + return; } }