Fix bug with rate and read/write mixed workloads at 100% bias
authorJens Axboe <axboe@kernel.dk>
Thu, 7 Feb 2013 18:55:24 +0000 (19:55 +0100)
committerJens Axboe <axboe@kernel.dk>
Thu, 7 Feb 2013 18:55:24 +0000 (19:55 +0100)
The rate_ddir() might sometimes decide to send the other data
direction, even if we have a workload with rw=randrw and
rwmixread=0. Check for this condition.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
io_u.c

diff --git a/io_u.c b/io_u.c
index 6ae3eae817782bd2d82c408b7b74f6dec6d59cf2..6598881941ef41297ac9566b6d24701affdde0ef 100644 (file)
--- a/io_u.c
+++ b/io_u.c
@@ -490,7 +490,7 @@ static enum fio_ddir rate_ddir(struct thread_data *td, enum fio_ddir ddir)
 
        assert(ddir_rw(ddir));
 
 
        assert(ddir_rw(ddir));
 
-       if (td->rate_pending_usleep[ddir] <= 0)
+       if (td->rate_pending_usleep[ddir] <= 0 || !td->o.rwmix[odir])
                return ddir;
 
        /*
                return ddir;
 
        /*
@@ -545,6 +545,7 @@ static enum fio_ddir rate_ddir(struct thread_data *td, enum fio_ddir ddir)
 
        if (ddir_trim(ddir))
                return ddir;
 
        if (ddir_trim(ddir))
                return ddir;
+
        return ddir;
 }
 
        return ddir;
 }