stat: collapse buf output flush and free
[fio.git] / eta.c
diff --git a/eta.c b/eta.c
index f608c4e56aed8142ee24bb6e4cdf8ce9c6e57484..7eb1c27f6a3c57b46f371b422fd800e480fb15ad 100644 (file)
--- a/eta.c
+++ b/eta.c
@@ -315,14 +315,19 @@ static void calc_iops(int unified_rw_rep, unsigned long mtime,
        int i;
 
        for (i = 0; i < DDIR_RWDIR_CNT; i++) {
-               unsigned long long diff;
+               unsigned long long diff, this_iops;
 
                diff = io_iops[i] - prev_io_iops[i];
+               if (mtime)
+                       this_iops = (diff * 1000) / mtime;
+               else
+                       this_iops = 0;
+
                if (unified_rw_rep) {
                        iops[i] = 0;
-                       iops[0] += (diff * 1000) / mtime;
+                       iops[0] += this_iops;
                } else
-                       iops[i] = (diff * 1000) / mtime;
+                       iops[i] = this_iops;
 
                prev_io_iops[i] = io_iops[i];
        }
@@ -347,7 +352,7 @@ int calc_thread_status(struct jobs_eta *je, int force)
        static struct timeval rate_prev_time, disp_prev_time;
 
        if (!force) {
-               if (output_format != FIO_OUTPUT_NORMAL &&
+               if (!(output_format & FIO_OUTPUT_NORMAL) &&
                    f_out == stdout)
                        return 0;
                if (temp_stall_ts || eta_print == FIO_ETA_NEVER)
@@ -585,7 +590,7 @@ struct jobs_eta *get_jobs_eta(int force, size_t *size)
        if (!thread_number)
                return NULL;
 
-       *size = sizeof(*je) + THREAD_RUNSTR_SZ;
+       *size = sizeof(*je) + THREAD_RUNSTR_SZ + 8;
        je = malloc(*size);
        if (!je)
                return NULL;