const char *filename)
{
struct io_log *l;
- pthread_mutexattr_t mattr;
l = scalloc(1, sizeof(*l));
INIT_FLIST_HEAD(&l->io_logs);
if (l->log_gz && !p->td)
l->log_gz = 0;
else if (l->log_gz || l->log_gz_store) {
- pthread_mutexattr_init(&mattr);
-#ifdef FIO_HAVE_PSHARED_MUTEX
- pthread_mutexattr_setpshared(&mattr, PTHREAD_PROCESS_SHARED);
-#endif
- pthread_mutex_init(&l->chunk_lock, &mattr);
+ mutex_init_pshared(&l->chunk_lock);
p->td->flags |= TD_F_COMPRESS_LOG;
}
cur_log = flist_first_entry(&log->io_logs, struct io_logs, list);
flist_del_init(&cur_log->list);
free(cur_log->log);
+ sfree(cur_log);
}
if (log->pending) {
#endif
-void flush_log(struct io_log *log, int do_append)
+void flush_log(struct io_log *log, bool do_append)
{
void *buf;
FILE *f;
cur_log = flist_first_entry(&log->io_logs, struct io_logs, list);
flist_del_init(&cur_log->list);
flush_samples(f, cur_log->log, cur_log->nr_samples * log_entry_sz(log));
+ sfree(cur_log);
}
fclose(f);
data->samples = cur_log->log;
data->nr_samples = cur_log->nr_samples;
- cur_log->nr_samples = 0;
- cur_log->max_samples = 0;
- cur_log->log = NULL;
+ sfree(cur_log);
gz_work(data);
}