Get rid of KiB vs KB distinction
[fio.git] / stat.c
diff --git a/stat.c b/stat.c
index 977796cd59dd9a8682f32f80973a8973f62f977d..7319b9c8c593176995a0ef493a5dbcaf6a350283 100644 (file)
--- a/stat.c
+++ b/stat.c
@@ -67,7 +67,7 @@ static void show_group_stats(struct group_run_stats *rs, int id)
                p3 = num2str(rs->min_bw[i], 6, 1024, 1);
                p4 = num2str(rs->max_bw[i], 6, 1024, 1);
 
-               log_info("%s: io=%siB, aggrb=%siB/s, minb=%siB/s, maxb=%siB/s,"
+               log_info("%s: io=%sB, aggrb=%sB/s, minb=%sB/s, maxb=%sB/s,"
                         " mint=%llumsec, maxt=%llumsec\n", ddir_str[i], p1, p2,
                                                p3, p4, rs->min_run[i],
                                                rs->max_run[i]);
@@ -166,7 +166,7 @@ static void show_ddir_status(struct group_run_stats *rs, struct thread_stat *ts,
        iops = (1000 * ts->total_io_u[ddir]) / runt;
        iops_p = num2str(iops, 6, 1, 0);
 
-       log_info("  %s: io=%siB, bw=%siB/s, iops=%s, runt=%6lumsec\n",
+       log_info("  %s: io=%sB, bw=%sB/s, iops=%s, runt=%6lumsec\n",
                                        ddir_str[ddir], io_p, bw_p, iops_p,
                                        ts->runtime[ddir]);
 
@@ -210,7 +210,7 @@ static void show_ddir_status(struct group_run_stats *rs, struct thread_stat *ts,
                double p_of_agg;
 
                p_of_agg = mean * 100 / (double) rs->agg[ddir];
-               log_info("    bw (KiB/s) : min=%5lu, max=%5lu, per=%3.2f%%,"
+               log_info("    bw (KB/s) : min=%5lu, max=%5lu, per=%3.2f%%,"
                         " avg=%5.02f, stdev=%5.02f\n", min, max, p_of_agg,
                                                        mean, dev);
        }
@@ -335,6 +335,12 @@ static void show_thread_status(struct thread_stat *ts,
        stat_calc_lat_u(ts, io_u_lat_u);
        stat_calc_lat_m(ts, io_u_lat_m);
        show_latencies(io_u_lat_u, io_u_lat_m);
+       if (ts->continue_on_error) {
+               log_info("     errors    : total=%lu, first_error=%d/<%s>\n",
+                                       ts->total_err_count,
+                                       ts->first_error,
+                                       strerror(ts->first_error));
+       }
 }
 
 static void show_ddir_status_terse(struct thread_stat *ts,
@@ -410,6 +416,8 @@ static void show_thread_status_terse(struct thread_stat *ts,
                log_info(";%3.2f%%", io_u_lat_u[i]);
        for (i = 0; i < FIO_IO_U_LAT_M_NR; i++)
                log_info(";%3.2f%%", io_u_lat_m[i]);
+       if (ts->continue_on_error)
+               log_info(";%lu;%d", ts->total_err_count, ts->first_error);
        log_info("\n");
 
        if (ts->description)
@@ -523,9 +531,18 @@ void show_run_stats(void)
                        ts->pid = td->pid;
                }
 
-               if (td->error && !ts->error) {
-                       ts->error = td->error;
-                       ts->verror = td->verror;
+               ts->continue_on_error = td->o.continue_on_error;
+               ts->total_err_count += td->total_err_count;
+               ts->first_error = td->first_error;
+               if (!ts->error) {
+                       if (!td->error && td->o.continue_on_error &&
+                           td->first_error) {
+                               ts->error = td->first_error;
+                               ts->verror = td->verror;
+                       } else  if (td->error) {
+                               ts->error = td->error;
+                               ts->verror = td->verror;
+                       }
                }
 
                for (l = 0; l <= DDIR_WRITE; l++) {