X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=log.c;h=5c468ad9f96c0a708fde126482f01a3bb6a430c3;hp=790d3a1e32c9d4c046bb17be0f10f44a74f5fef3;hb=61a179a8fa701a2f5e9cd92b78ccc98f96b9f1d4;hpb=391ba6ac169ad7deaf3bb3840046581f45d755e1 diff --git a/log.c b/log.c index 790d3a1e..5c468ad9 100644 --- a/log.c +++ b/log.c @@ -4,15 +4,16 @@ */ #include #include +#include #include -#include "list.h" +#include "flist.h" #include "fio.h" static const char iolog_ver2[] = "fio version 2 iolog"; void queue_io_piece(struct thread_data *td, struct io_piece *ipo) { - list_add_tail(&ipo->list, &td->io_log_list); + flist_add_tail(&ipo->list, &td->io_log_list); td->total_io_size += ipo->len; } @@ -40,6 +41,13 @@ void log_file(struct thread_data *td, struct fio_file *f, if (!td->o.write_iolog_file) return; + + /* + * this happens on the pre-open/close done before the job starts + */ + if (!td->iolog_f) + return; + fprintf(td->iolog_f, "%s %s\n", f->file_name, act[what]); } @@ -101,11 +109,11 @@ int read_iolog_get(struct thread_data *td, struct io_u *io_u) { struct io_piece *ipo; - while (!list_empty(&td->io_log_list)) { + while (!flist_empty(&td->io_log_list)) { int ret; - ipo = list_entry(td->io_log_list.next, struct io_piece, list); - list_del(&ipo->list); + ipo = flist_entry(td->io_log_list.next, struct io_piece, list); + flist_del(&ipo->list); ret = ipo_special(td, ipo); if (ret < 0) { @@ -147,9 +155,9 @@ void prune_io_piece_log(struct thread_data *td) free(ipo); } - while (!list_empty(&td->io_hist_list)) { - ipo = list_entry(td->io_hist_list.next, struct io_piece, list); - list_del(&ipo->list); + while (!flist_empty(&td->io_hist_list)) { + ipo = flist_entry(td->io_hist_list.next, struct io_piece, list); + flist_del(&ipo->list); free(ipo); } } @@ -177,8 +185,8 @@ void log_io_piece(struct thread_data *td, struct io_u *io_u) * wrote it out is the fastest. */ if (!td_random(td) || !td->o.overwrite) { - INIT_LIST_HEAD(&ipo->list); - list_add_tail(&ipo->list, &td->io_hist_list); + INIT_FLIST_HEAD(&ipo->list); + flist_add_tail(&ipo->list, &td->io_hist_list); return; } @@ -299,7 +307,7 @@ static int read_iolog2(struct thread_data *td, FILE *f) */ ipo = malloc(sizeof(*ipo)); memset(ipo, 0, sizeof(*ipo)); - INIT_LIST_HEAD(&ipo->list); + INIT_FLIST_HEAD(&ipo->list); ipo->offset = offset; ipo->len = bytes; ipo->ddir = rw;