Fix garbling of clat/slat logs if a shared log file is used
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
diff --git a/fio.c b/fio.c
index f0665e0..4a02f2e 100644
--- a/fio.c
+++ b/fio.c
@@ -52,6 +52,7 @@
unsigned long done_secs = 0;
static struct fio_mutex *startup_mutex;
+static struct fio_mutex *writeout_mutex;
static volatile int fio_abort;
static int exit_value;
static struct itimerval itimer;
@@ -1086,6 +1087,7 @@
td->ts.io_bytes[0] = td->io_bytes[0];
td->ts.io_bytes[1] = td->io_bytes[1];
+ fio_mutex_down(writeout_mutex);
if (td->ts.bw_log) {
if (td->o.bw_log_file) {
finish_log_named(td, td->ts.bw_log,
@@ -1107,6 +1109,7 @@
} else
finish_log(td, td->ts.clat_log, "clat");
}
+ fio_mutex_up(writeout_mutex);
if (td->o.exec_postrun) {
if (system(td->o.exec_postrun) < 0)
log_err("fio: postrun %s failed\n", td->o.exec_postrun);
@@ -1554,6 +1557,7 @@
}
startup_mutex = fio_mutex_init(0);
+ writeout_mutex = fio_mutex_init(1);
set_genesis_time();
@@ -1571,5 +1575,6 @@
}
fio_mutex_remove(startup_mutex);
+ fio_mutex_remove(writeout_mutex);
return exit_value;
}