Rate must always calculate bytes done
Otherwise rate will never be checked.
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
diff --git a/fio.c b/fio.c
index 58e03f9..dbea661 100644
--- a/fio.c
+++ b/fio.c
@@ -96,6 +96,7 @@
*/
static int check_min_rate(struct thread_data *td, struct timeval *now)
{
+ unsigned long long bytes = 0;
unsigned long spent;
unsigned long rate;
@@ -105,21 +106,19 @@
if (mtime_since(&td->start, now) < 2000)
return 0;
+ if (td_read(td))
+ bytes += td->this_io_bytes[DDIR_READ];
+ if (td_write(td))
+ bytes += td->this_io_bytes[DDIR_WRITE];
+
/*
* if rate blocks is set, sample is running
*/
if (td->rate_bytes) {
- unsigned long long bytes = 0;
-
spent = mtime_since(&td->lastrate, now);
if (spent < td->ratecycle)
return 0;
- if (td_read(td))
- bytes += td->this_io_bytes[DDIR_READ];
- if (td_write(td))
- bytes += td->this_io_bytes[DDIR_WRITE];
-
if (bytes < td->rate_bytes) {
fprintf(f_out, "%s: min rate %u not met\n", td->name, td->ratemin);
return 1;
@@ -130,9 +129,9 @@
return 1;
}
}
- td->rate_bytes = bytes;
}
+ td->rate_bytes = bytes;
memcpy(&td->lastrate, now, sizeof(*now));
return 0;
}