Add ramp_time option
[fio.git] / io_u.c
diff --git a/io_u.c b/io_u.c
index 0d24b189fece6ee48d11e4f3bf493af271f2731e..17db16b1cb3ad13a29a7d4c8e905b564f3e88573 100644 (file)
--- a/io_u.c
+++ b/io_u.c
@@ -235,7 +235,7 @@ static inline int is_power_of_2(unsigned int val)
 static unsigned int get_next_buflen(struct thread_data *td, struct io_u *io_u)
 {
        const int ddir = io_u->ddir;
-       unsigned int buflen = buflen; /* silence dumb gcc warning */
+       unsigned int uninitialized_var(buflen);
        unsigned int minbs, maxbs;
        long r;
 
@@ -903,24 +903,29 @@ static void io_completed(struct thread_data *td, struct io_u *io_u,
        if (!io_u->error) {
                unsigned int bytes = io_u->buflen - io_u->resid;
                const enum fio_ddir idx = io_u->ddir;
-               int ret;
+               int ret, ramp_done;
 
-               td->io_blocks[idx]++;
-               td->io_bytes[idx] += bytes;
-               td->this_io_bytes[idx] += bytes;
+               ramp_done = ramp_time_over(td);
 
-               usec = utime_since(&io_u->issue_time, &icd->time);
+               if (ramp_done) {
+                       td->io_blocks[idx]++;
+                       td->io_bytes[idx] += bytes;
+                       td->this_io_bytes[idx] += bytes;
 
-               add_clat_sample(td, idx, usec);
-               add_bw_sample(td, idx, &icd->time);
-               io_u_mark_latency(td, usec);
+                       usec = utime_since(&io_u->issue_time, &icd->time);
+
+                       add_clat_sample(td, idx, usec);
+                       add_bw_sample(td, idx, &icd->time);
+                       io_u_mark_latency(td, usec);
+               }
 
                if (td_write(td) && idx == DDIR_WRITE &&
                    td->o.do_verify &&
                    td->o.verify != VERIFY_NONE)
                        log_io_piece(td, io_u);
 
-               icd->bytes_done[idx] += bytes;
+               if (ramp_done)
+                       icd->bytes_done[idx] += bytes;
 
                if (io_u->end_io) {
                        ret = io_u->end_io(td, io_u);