eta: Avoid adjustements to a negative value
authorDamien Le Moal <damien.lemoal@wdc.com>
Wed, 26 Sep 2018 06:42:10 +0000 (15:42 +0900)
committerJens Axboe <axboe@kernel.dk>
Wed, 26 Sep 2018 14:25:59 +0000 (08:25 -0600)
commitc3795cb0372a28172ad6fa325d6b8219193ada76
treed7d04da036e37f2aff5e5ef698464bc548ba5be5
parent7676a1c25fcdacfe27d84a0f86fe68077b7de79a
eta: Avoid adjustements to a negative value

In the case of zonemode=strided job with both zone_size and zone_skip
specified, thread_eta() calculates the upper bound of the number of
zones that will be processed, including skipped bytes between zones
(zone_skip). Adjusting bytes_total (i.e. total_io_size) by substracting
this number of zones times the amount of skipped bytes can result in
a negative value for bytes_total (a large number of bytes) when for
example the job operates on an entire disk with a capacity that is not
divisible exactly by zone_size+zone_skip or if the options --size is
used to limit the I/O range. In such case, use the lower bound of the
number of zones to obtain a better approximation of the job eta.

Additionnally, if --io_size was specified, bytes_total will indicate
this exact value, so adjusting that value for zonemode != none is not
necessary.

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