Update fio io engine version
[fio.git] / io_u.c
diff --git a/io_u.c b/io_u.c
index 9c8ff2638df5ed3ea57bb943f04672a7b8f63077..31d3b14be50d0e124a8de277245cc043f4d1c624 100644 (file)
--- a/io_u.c
+++ b/io_u.c
@@ -100,7 +100,7 @@ static int get_next_free_block(struct thread_data *td, struct fio_file *f,
 static int get_next_rand_offset(struct thread_data *td, struct fio_file *f,
                                int ddir, unsigned long long *b)
 {
-       unsigned long long max_blocks = f->file_size / td->o.min_bs[ddir];
+       unsigned long long max_blocks = f->io_size / td->o.min_bs[ddir];
        unsigned long long r, rb;
        int loops = 5;
 
@@ -250,7 +250,7 @@ static enum fio_ddir get_rw_ddir(struct thread_data *td)
                         */
                        ddir = get_rand_ddir(td);
                        max_bytes = td->this_io_bytes[ddir];
-                       if (max_bytes >= (td->io_size * td->o.rwmix[ddir] / 100)) {
+                       if (max_bytes >= (td->o.size * td->o.rwmix[ddir] / 100)) {
                                if (!td->rw_end_set[ddir]) {
                                        td->rw_end_set[ddir] = 1;
                                        memcpy(&td->rw_end[ddir], &now, sizeof(now));
@@ -310,7 +310,7 @@ static int fill_io_u(struct thread_data *td, struct io_u *io_u)
           !(td->io_issues[DDIR_WRITE] % td->o.fsync_blocks) &&
             td->io_issues[DDIR_WRITE] && should_fsync(td)) {
                io_u->ddir = DDIR_SYNC;
-               return 0;
+               goto out;
        }
 
        io_u->ddir = get_rw_ddir(td);
@@ -329,12 +329,13 @@ static int fill_io_u(struct thread_data *td, struct io_u *io_u)
        /*
         * mark entry before potentially trimming io_u
         */
-       if (!td->o.read_iolog && td_random(td) && !td->o.norandommap)
+       if (td_random(td) && !td->o.norandommap)
                mark_random_map(td, io_u);
 
        /*
         * If using a write iolog, store this entry.
         */
+out:
        if (td->o.write_iolog_file)
                write_iolog_put(td, io_u);
 
@@ -660,7 +661,8 @@ static void io_completed(struct thread_data *td, struct io_u *io_u,
                add_bw_sample(td, idx, &icd->time);
                io_u_mark_latency(td, msec);
 
-               if ((td_rw(td) || td_write(td)) && idx == DDIR_WRITE)
+               if ((td_rw(td) || td_write(td)) && idx == DDIR_WRITE &&
+                   td->o.verify != VERIFY_NONE)
                        log_io_piece(td, io_u);
 
                icd->bytes_done[idx] += bytes;