bssplit: Fix handling of 0 percentage
authorDamien Le Moal <damien.lemoal@wdc.com>
Wed, 31 Jul 2019 04:32:07 +0000 (13:32 +0900)
committerJens Axboe <axboe@kernel.dk>
Wed, 31 Jul 2019 14:47:59 +0000 (08:47 -0600)
commitcc5e4cb0b61e78f176754cec57d62c7d53d70fc6
treeb208eedeb1c691e700a43a4160b8bc577c8e23b1
parent029b42ace698eae477c5e261d2f82b191507526b
bssplit: Fix handling of 0 percentage

If a block size percentage is ispecified as 0 in bssplit, the block size
defined is not ignored by the loop in get_next_buflen(). In particular,
if the first (smallest) block size specified has a 0 percentage, the
loop is existed and that block size used as the next IO size, resulting
in a behavior equivalent to specifying 100%. E.g. using
--bssplit=64k/0,1024k/100 results in 100% of issued IOs to be 64KB
instead of 1MB.

Fix this by ignoring bssplit entries that have a 0 percentage. This is
safe as the initialization of the bssplit array ensure that the sum of
all percentages is always 100, guaranteeing that a block size will be
chosen for the next IO size.

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
io_u.c