*log = l;
}
+#ifdef CONFIG_SETVBUF
+static void *set_file_buffer(FILE *f)
+{
+ size_t size = 1048576;
+ void *buf;
+
+ buf = malloc(size);
+ setvbuf(f, buf, _IOFBF, size);
+ return buf;
+}
+
+static void clear_file_buffer(void *buf)
+{
+ free(buf);
+}
+#else
+static void *set_file_buffer(FILE *f)
+{
+ return NULL;
+}
+
+static void clear_file_buffer(void *buf)
+{
+}
+#endif
+
void __finish_log(struct io_log *log, const char *name)
{
unsigned int i;
+ void *buf;
FILE *f;
f = fopen(name, "a");
return;
}
+ buf = set_file_buffer(f);
+
for (i = 0; i < log->nr_samples; i++) {
fprintf(f, "%lu, %lu, %u, %u\n",
(unsigned long) log->log[i].time,
}
fclose(f);
+ clear_file_buffer(buf);
free(log->log);
free(log);
}
CLAT_LOG_MASK = 8,
IOPS_LOG_MASK = 16,
- ALL_LOG_MASK = 31,
ALL_LOG_NR = 5,
};
void fio_writeout_logs(struct thread_data *td)
{
- unsigned int log_mask = ALL_LOG_MASK;
+ unsigned int log_mask = 0;
unsigned int log_left = ALL_LOG_NR;
int old_state, i;
struct log_type *lt = &log_types[i];
int ret;
- if (log_mask & lt->mask) {
+ if (!(log_mask & lt->mask)) {
ret = lt->fn(td, log_left != 1);
if (!ret) {
log_left--;
- log_mask &= ~lt->mask;
+ log_mask |= lt->mask;
}
}
}