projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Use default CPU_COUNT() function in DragonFlyBSD
[fio.git]
/
iolog.c
diff --git
a/iolog.c
b/iolog.c
index aec0881ed51784f69d16d32ce01132f070674f66..4c87f1cb88d723f90712da14474ce2d1fe71deba 100644
(file)
--- a/
iolog.c
+++ b/
iolog.c
@@
-587,6
+587,15
@@
void setup_log(struct io_log **log, struct log_params *p,
l->filename = strdup(filename);
l->td = p->td;
l->filename = strdup(filename);
l->td = p->td;
+ if (l->td && l->td->o.io_submit_mode != IO_MODE_OFFLOAD) {
+ struct io_logs *p;
+
+ p = calloc(1, sizeof(*l->pending));
+ p->max_samples = DEF_LOG_ENTRIES;
+ p->log = calloc(p->max_samples, log_entry_sz(l));
+ l->pending = p;
+ }
+
if (l->log_offset)
l->log_ddir_mask = LOG_OFFSET_SAMPLE_BIT;
if (l->log_offset)
l->log_ddir_mask = LOG_OFFSET_SAMPLE_BIT;
@@
-595,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) {
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;
}
p->td->flags |= TD_F_COMPRESS_LOG;
}
@@
-636,8
+645,16
@@
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);
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) {
+ free(log->pending->log);
+ free(log->pending);
+ log->pending = NULL;
}
}
+ free(log->pending);
free(log->filename);
sfree(log);
}
free(log->filename);
sfree(log);
}
@@
-948,7
+965,7
@@
int iolog_file_inflate(const char *file)
#endif
#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;
{
void *buf;
FILE *f;
@@
-972,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));
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);
}
fclose(f);
@@
-1210,9
+1228,7
@@
static int iolog_flush(struct io_log *log)
data->samples = cur_log->log;
data->nr_samples = cur_log->nr_samples;
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);
}
gz_work(data);
}