From: Jens Axboe Date: Sat, 13 Jan 2007 11:29:13 +0000 (+0100) Subject: [PATCH] Fixup rate usec cycle calculation for small values X-Git-Tag: fio-1.12~151 X-Git-Url: https://git.kernel.dk/?p=fio.git;a=commitdiff_plain;h=fb44a18f1bd81b26c3d483c79f5707085bda24dc [PATCH] Fixup rate usec cycle calculation for small values If someone set rate to 2KiB/sec or something low in that range, we would integer divide by zero. Do calculation in reads per msec instead of full seconds and fix the zero division. Signed-off-by: Jens Axboe --- diff --git a/log.c b/log.c index f61215ea..a4f4c780 100644 --- a/log.c +++ b/log.c @@ -185,7 +185,8 @@ int init_iolog(struct thread_data *td) int setup_rate(struct thread_data *td) { - int nr_reads_per_sec; + unsigned long long rate; + int nr_reads_per_msec; if (!td->rate) return 0; @@ -195,8 +196,14 @@ int setup_rate(struct thread_data *td) return -1; } - nr_reads_per_sec = (td->rate * 1024) / td->min_bs[DDIR_READ]; - td->rate_usec_cycle = 1000000 / nr_reads_per_sec; + rate = td->rate; + nr_reads_per_msec = (rate * 1024 * 1000) / td->min_bs[DDIR_READ]; + if (!nr_reads_per_msec) { + log_err("rate lower than supported\n"); + return -1; + } + + td->rate_usec_cycle = 1000000000ULL / nr_reads_per_msec; td->rate_pending_usleep = 0; return 0; }