Add sparc and sparc64 support
[fio.git] / io_u.c
diff --git a/io_u.c b/io_u.c
index b10e83eee3b3871aa3ad7a957e3cc0ffec00ea00..1637b74daf69ede187ad5c063ac95e1dcee31cd5 100644 (file)
--- a/io_u.c
+++ b/io_u.c
@@ -7,6 +7,7 @@
 
 #include "fio.h"
 #include "hash.h"
+#include "lib/ffz.h"
 
 /*
  * Change this define to play with the timeout handling
@@ -108,7 +109,7 @@ static int get_next_free_block(struct thread_data *td, struct fio_file *f,
        *b = (i * BLOCKS_PER_MAP);
        while ((*b) * min_bs < f->real_file_size) {
                if (f->file_map[i] != -1UL) {
-                       *b += fio_ffz(f->file_map[i]);
+                       *b += ffz(f->file_map[i]);
                        if (*b > last_block(td, f, ddir))
                                break;
                        f->last_free_lookup = i;
@@ -350,6 +351,8 @@ void requeue_io_u(struct thread_data *td, struct io_u **io_u)
 {
        struct io_u *__io_u = *io_u;
 
+       dprint(FD_IO, "requeue %p\n", __io_u);
+
        __io_u->flags |= IO_U_F_FREE;
        if ((__io_u->flags & IO_U_F_FLIGHT) && (__io_u->ddir != DDIR_SYNC))
                td->io_issues[__io_u->ddir]--;
@@ -818,6 +821,8 @@ struct io_u *get_io_u(struct thread_data *td)
 
                if (td->o.verify != VERIFY_NONE)
                        populate_verify_io_u(td, io_u);
+               else if (td->o.refill_buffers && io_u->ddir == DDIR_WRITE)
+                       io_u_fill_buffer(td, io_u, io_u->xfer_buflen);
        }
 
        /*
@@ -827,8 +832,6 @@ struct io_u *get_io_u(struct thread_data *td)
        io_u->xfer_buf = io_u->buf;
        io_u->xfer_buflen = io_u->buflen;
 
-       if (td->o.refill_buffers && io_u->ddir == DDIR_WRITE)
-               io_u_fill_buffer(td, io_u, io_u->xfer_buflen);
 out:
        if (!td_io_prep(td, io_u)) {
                fio_gettime(&io_u->start_time, NULL);