+
+ fio_unlock_file(file_name);
+ return 0;
+}
+
+static int finish_log(struct thread_data *td, struct io_log *log,
+ const char *name, int trylock)
+{
+ return finish_log_named(td, log, td->o.name, name, trylock);
+}
+
+static int write_this_log(struct thread_data *td, struct io_log *log,
+ const char *log_file, const char *name, int try)
+{
+ int ret;
+
+ if (!log)
+ return 0;
+
+ if (log_file)
+ ret = finish_log_named(td, log, log_file, name, try);
+ else
+ ret = finish_log(td, log, name, try);
+
+ return ret;
+}
+
+static int write_iops_log(struct thread_data *td, int try)
+{
+ struct thread_options *o = &td->o;
+
+ return write_this_log(td, td->iops_log, o->iops_log_file, "iops", try);
+}
+
+static int write_slat_log(struct thread_data *td, int try)
+{
+ struct thread_options *o = &td->o;
+
+ return write_this_log(td, td->slat_log, o->lat_log_file, "slat", try);
+}
+
+static int write_clat_log(struct thread_data *td, int try)
+{
+ struct thread_options *o = &td->o;
+
+ return write_this_log(td, td->clat_log, o->lat_log_file, "clat" , try);
+}
+
+static int write_lat_log(struct thread_data *td, int try)
+{
+ struct thread_options *o = &td->o;
+
+ return write_this_log(td, td->lat_log, o->lat_log_file, "lat", try);