X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=iolog.c;h=ff521df4719818e2ecf368ef021e1763be5a1f3b;hp=d9a17a5bcc44537778aa646c0b731a3443fe77ee;hb=bccdc0d0c9d41749515131226aab71baa59e03cd;hpb=a9afa45a6162ef29fde55e7e992fa5f574c4e4d5 diff --git a/iolog.c b/iolog.c index d9a17a5b..ff521df4 100644 --- a/iolog.c +++ b/iolog.c @@ -604,7 +604,7 @@ void setup_log(struct io_log **log, struct log_params *p, if (l->log_gz && !p->td) l->log_gz = 0; else if (l->log_gz || l->log_gz_store) { - pthread_mutex_init(&l->chunk_lock, NULL); + mutex_init_pshared(&l->chunk_lock); p->td->flags |= TD_F_COMPRESS_LOG; } @@ -645,6 +645,7 @@ void free_log(struct io_log *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) { @@ -988,6 +989,7 @@ void flush_log(struct io_log *log, int do_append) 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); @@ -1226,9 +1228,7 @@ static int iolog_flush(struct io_log *log) 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); }