X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=fio.c;h=9fabbe93bc53a7887cc6457371b55ea202ff3ebc;hp=29fecb79d1203e9d93502ca1c685ab865412ab62;hb=a3dc65e515943b3a292261ba95d643457863d93d;hpb=2b4ce34fac9f3031dc8606d6cd640c61a74d7df7 diff --git a/fio.c b/fio.c index 29fecb79..9fabbe93 100644 --- a/fio.c +++ b/fio.c @@ -699,6 +699,7 @@ static int clear_io_state(struct thread_data *td) td->zone_bytes = 0; td->rate_bytes = 0; td->rate_blocks = 0; + td->rw_end_set[0] = td->rw_end_set[1] = 0; td->last_was_sync = 0; @@ -723,6 +724,7 @@ static void *thread_main(void *data) { unsigned long long runtime[2]; struct thread_data *td = data; + unsigned long elapsed; int clear_state; if (!td->o.use_thread) @@ -811,10 +813,22 @@ static void *thread_main(void *data) clear_state = 1; - if (td_read(td) && td->io_bytes[DDIR_READ]) - runtime[DDIR_READ] += utime_since_now(&td->start); - if (td_write(td) && td->io_bytes[DDIR_WRITE]) - runtime[DDIR_WRITE] += utime_since_now(&td->start); + if (td_read(td) && td->io_bytes[DDIR_READ]) { + if (td->rw_end_set[DDIR_READ]) + elapsed = utime_since(&td->start, &td->rw_end[DDIR_READ]); + else + elapsed = utime_since_now(&td->start); + + runtime[DDIR_READ] += elapsed; + } + if (td_write(td) && td->io_bytes[DDIR_WRITE]) { + if (td->rw_end_set[DDIR_WRITE]) + elapsed = utime_since(&td->start, &td->rw_end[DDIR_WRITE]); + else + elapsed = utime_since_now(&td->start); + + runtime[DDIR_WRITE] += elapsed; + } if (td->error || td->terminate) break;