From f1dede62a316b6a85048c2562198f885c5388c54 Mon Sep 17 00:00:00 2001 From: Ben Walker Date: Mon, 23 Mar 2020 14:10:51 -0700 Subject: [PATCH] bdevperf: Gather all of the job construction code into a single function Keep it all in one place to make it easier to see. Change-Id: I8c2cc1b5da8ce431d7b1b5546440324db169e09c Signed-off-by: Ben Walker Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1509 Tested-by: SPDK CI Jenkins Reviewed-by: Shuhei Matsumoto Reviewed-by: Jim Harris Reviewed-by: Paul Luse Reviewed-by: Aleksey Marchuk --- test/bdev/bdevperf/bdevperf.c | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/test/bdev/bdevperf/bdevperf.c b/test/bdev/bdevperf/bdevperf.c index af8fb198e..8f22b6452 100644 --- a/test/bdev/bdevperf/bdevperf.c +++ b/test/bdev/bdevperf/bdevperf.c @@ -1070,6 +1070,22 @@ bdevperf_construct_job(struct spdk_io_channel_iter *i) return; } + block_size = spdk_bdev_get_block_size(ctx->bdev); + data_block_size = spdk_bdev_get_data_block_size(ctx->bdev); + + if (g_unmap && !spdk_bdev_io_type_supported(ctx->bdev, SPDK_BDEV_IO_TYPE_UNMAP)) { + printf("Skipping %s because it does not support unmap\n", spdk_bdev_get_name(ctx->bdev)); + spdk_for_each_channel_continue(i, -ENOTSUP); + return; + } + + if ((g_io_size % data_block_size) != 0) { + SPDK_ERRLOG("IO size (%d) is not multiples of data block size of bdev %s (%"PRIu32")\n", + g_io_size, spdk_bdev_get_name(ctx->bdev), data_block_size); + spdk_for_each_channel_continue(i, -ENOTSUP); + return; + } + job = calloc(1, sizeof(struct bdevperf_job)); if (!job) { fprintf(stderr, "Unable to allocate memory for new job.\n"); @@ -1096,8 +1112,6 @@ bdevperf_construct_job(struct spdk_io_channel_iter *i) job->bdev = bdev; - block_size = spdk_bdev_get_block_size(bdev); - data_block_size = spdk_bdev_get_data_block_size(bdev); job->io_size_blocks = g_io_size / data_block_size; job->buf_size = job->io_size_blocks * block_size; @@ -1209,21 +1223,8 @@ get_next_bdevperf_reactor(void) static void _bdevperf_construct_jobs(struct spdk_bdev *bdev) { - uint32_t data_block_size; struct construct_jobs_ctx *ctx; - if (g_unmap && !spdk_bdev_io_type_supported(bdev, SPDK_BDEV_IO_TYPE_UNMAP)) { - printf("Skipping %s because it does not support unmap\n", spdk_bdev_get_name(bdev)); - return; - } - - data_block_size = spdk_bdev_get_data_block_size(bdev); - if ((g_io_size % data_block_size) != 0) { - SPDK_ERRLOG("IO size (%d) is not multiples of data block size of bdev %s (%"PRIu32")\n", - g_io_size, spdk_bdev_get_name(bdev), data_block_size); - return; - } - ctx = calloc(1, sizeof(*ctx)); if (ctx == NULL) { return;