Be a little more clever in finding child options
[fio.git] / eta.c
diff --git a/eta.c b/eta.c
index 31028dd840976e4d1137824c1101269351ec7b2a..39241c5aaf5a529dee695e86ef09c5c17d1efb15 100644 (file)
--- a/eta.c
+++ b/eta.c
@@ -118,13 +118,19 @@ static int thread_eta(struct thread_data *td, unsigned long elapsed)
                bytes_total /= (td->o.zone_skip / td->o.zone_size);
 
        if (td->runstate == TD_RUNNING || td->runstate == TD_VERIFYING) {
-               double perc;
+               double perc, perc_t;
 
                bytes_done = td->io_bytes[DDIR_READ] + td->io_bytes[DDIR_WRITE];
                perc = (double) bytes_done / (double) bytes_total;
                if (perc > 1.0)
                        perc = 1.0;
 
+               if (td->o.time_based) {
+                       perc_t = (double) elapsed / (double) td->o.timeout;
+                       if (perc_t < perc)
+                               perc = perc_t;
+               }
+
                eta_sec = (unsigned long) (elapsed * (1.0 / perc)) - elapsed;
 
                if (td->o.timeout && eta_sec > (td->o.timeout - elapsed))