From 25191ba7ab786ce689cb08127057e1d48fd5ccf5 Mon Sep 17 00:00:00 2001 From: Dariusz Stojaczyk Date: Tue, 6 Feb 2018 14:40:41 +0100 Subject: [PATCH] test/bdevperf: fix arithmetic exception if io_size < block_size Don't divide by 0. Change-Id: Ib7978df1b9361f76c2d720744923e6e7d6c97718 Signed-off-by: Dariusz Stojaczyk Reviewed-on: https://review.gerrithub.io/398584 Tested-by: SPDK Automated Test System Reviewed-by: Daniel Verkamp Reviewed-by: Jim Harris --- test/lib/bdev/bdevperf/bdevperf.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/test/lib/bdev/bdevperf/bdevperf.c b/test/lib/bdev/bdevperf/bdevperf.c index 89eb26153..3907d468b 100644 --- a/test/lib/bdev/bdevperf/bdevperf.c +++ b/test/lib/bdev/bdevperf/bdevperf.c @@ -219,6 +219,16 @@ bdevperf_construct_targets(void) target->current_queue_depth = 0; target->offset_in_ios = 0; target->io_size_blocks = g_io_size / spdk_bdev_get_block_size(bdev); + if (target->io_size_blocks == 0) { + SPDK_ERRLOG("IO size (%d) is bigger than blocksize of bdev %s (%"PRIu32")\n", + g_io_size, spdk_bdev_get_name(bdev), spdk_bdev_get_block_size(bdev)); + spdk_bdev_close(target->bdev_desc); + free(target->name); + free(target); + bdev = spdk_bdev_next_leaf(bdev); + continue; + } + target->size_in_ios = spdk_bdev_get_num_blocks(bdev) / target->io_size_blocks; align = spdk_bdev_get_buf_align(bdev); /*