Add json output for client/server mode
[fio.git] / io_u.c
diff --git a/io_u.c b/io_u.c
index 6537c90cf0a0b8208fbc101c460ca9fef559844c..7df57aa804316a01efe1422e0d924dfa77b82f65 100644 (file)
--- a/io_u.c
+++ b/io_u.c
@@ -1136,10 +1136,9 @@ struct io_u *__get_io_u(struct thread_data *td)
 again:
        if (!io_u_rempty(&td->io_u_requeues))
                io_u = io_u_rpop(&td->io_u_requeues);
-       else if (!io_u_qempty(&td->io_u_freelist))
+       else if (!io_u_qempty(&td->io_u_freelist)) {
                io_u = io_u_qpop(&td->io_u_freelist);
 
-       if (io_u) {
                io_u->buflen = 0;
                io_u->resid = 0;
                io_u->file = NULL;
@@ -1412,7 +1411,10 @@ static void account_io_completion(struct thread_data *td, struct io_u *io_u,
        if (!td->o.disable_bw)
                add_bw_sample(td, idx, bytes, &icd->time);
 
-       add_iops_sample(td, idx, &icd->time);
+       add_iops_sample(td, idx, bytes, &icd->time);
+
+       if (td->o.number_ios && !--td->o.number_ios)
+               td->done = 1;
 }
 
 static long long usec_for_io(struct thread_data *td, enum fio_ddir ddir)