Merge branch 'master' of ssh://brick.kernel.dk/data/git/fio
authorJens Axboe <axboe@carl.home.kernel.dk>
Mon, 5 Mar 2007 18:23:19 +0000 (19:23 +0100)
committerJens Axboe <axboe@carl.home.kernel.dk>
Mon, 5 Mar 2007 18:23:19 +0000 (19:23 +0100)
fio.c
ioengines.c

diff --git a/fio.c b/fio.c
index bf903d92c0c912aa05e8a3ecbe4e47bbc53f712c..45ed354b0f85f4bf2033d07bac1dc279cca618e7 100644 (file)
--- a/fio.c
+++ b/fio.c
@@ -291,9 +291,8 @@ static void do_verify(struct thread_data *td)
                }
 
                io_u->end_io = verify_io_u;
-requeue:
-               ret = td_io_queue(td, io_u);
 
+               ret = td_io_queue(td, io_u);
                switch (ret) {
                case FIO_Q_COMPLETED:
                        if (io_u->error)
@@ -303,11 +302,12 @@ requeue:
 
                                io_u->xfer_buflen = io_u->resid;
                                io_u->xfer_buf += bytes;
-                               goto requeue;
+                               requeue_io_u(td, &io_u);
+                       } else {
+                               ret = io_u_sync_complete(td, io_u);
+                               if (ret < 0)
+                                       break;
                        }
-                       ret = io_u_sync_complete(td, io_u);
-                       if (ret < 0)
-                               break;
                        continue;
                case FIO_Q_QUEUED:
                        break;
@@ -414,9 +414,8 @@ static void do_io(struct thread_data *td)
                        put_io_u(td, io_u);
                        break;
                }
-requeue:
-               ret = td_io_queue(td, io_u);
 
+               ret = td_io_queue(td, io_u);
                switch (ret) {
                case FIO_Q_COMPLETED:
                        if (io_u->error)
@@ -426,12 +425,13 @@ requeue:
 
                                io_u->xfer_buflen = io_u->resid;
                                io_u->xfer_buf += bytes;
-                               goto requeue;
+                               requeue_io_u(td, &io_u);
+                       } else {
+                               fio_gettime(&comp_time, NULL);
+                               bytes_done = io_u_sync_complete(td, io_u);
+                               if (bytes_done < 0)
+                                       ret = bytes_done;
                        }
-                       fio_gettime(&comp_time, NULL);
-                       bytes_done = io_u_sync_complete(td, io_u);
-                       if (bytes_done < 0)
-                               ret = bytes_done;
                        break;
                case FIO_Q_QUEUED:
                        /*
index a7ccad66f810b982b7a0d15b355aa6efcbde0334..a395da15a95c113fb241981eb84b1fc32c009fd0 100644 (file)
@@ -195,6 +195,9 @@ int td_io_queue(struct thread_data *td, struct io_u *io_u)
        assert((io_u->flags & IO_U_F_FLIGHT) == 0);
        io_u->flags |= IO_U_F_FLIGHT;
 
+       io_u->error = 0;
+       io_u->resid = 0;
+
        if (td->io_ops->flags & FIO_SYNCIO) {
                fio_gettime(&io_u->issue_time, NULL);