From 4b468d7c9b07bfc77922be62abf47c16ed6661ff Mon Sep 17 00:00:00 2001 From: Jim Harris Date: Tue, 27 Jun 2017 17:20:45 -0700 Subject: [PATCH] bdevperf: create task buffer pool after enumerating targets This ensures we have calculated the correct minimum buffer alignment before allocating the buffers. Fixes issue reported by Ziye Yang that bdevperf did not work with AIO bdev backend. Signed-off-by: Jim Harris Change-Id: Ic223551cc3ce1fb723ffcd745513c04198f13433 Reviewed-on: https://review.gerrithub.io/367291 Tested-by: SPDK Automated Test System Reviewed-by: Daniel Verkamp --- test/lib/bdev/bdevperf/bdevperf.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/test/lib/bdev/bdevperf/bdevperf.c b/test/lib/bdev/bdevperf/bdevperf.c index 718c335be..53d75b7ed 100644 --- a/test/lib/bdev/bdevperf/bdevperf.c +++ b/test/lib/bdev/bdevperf/bdevperf.c @@ -532,13 +532,18 @@ bdevperf_run(void *arg1, void *arg2) struct io_target *target; struct spdk_event *event; + bdevperf_construct_targets(); + + /* + * Create the task pool after we have enumerated the targets, so that we know + * the min buffer alignment. Some backends such as AIO have alignment restrictions + * that must be accounted for. + */ task_pool = rte_mempool_create("task_pool", 4096 * spdk_env_get_core_count(), sizeof(struct bdevperf_task), 64, 0, NULL, NULL, task_ctor, NULL, SOCKET_ID_ANY, 0); - bdevperf_construct_targets(); - printf("Running I/O for %d seconds...\n", g_time_in_sec); fflush(stdout);