X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=iolog.c;h=137c1e9889c8e025a59d8ab71df7378b767ef996;hp=7b212bb598f124c3ce745e8f08918d4d0efd4f4d;hb=6bc821bd8647de03b9f365160fc3d492dc6a54bd;hpb=9746fdbbd89cb202ecf2ee402b79ef215390eaea diff --git a/iolog.c b/iolog.c index 7b212bb5..137c1e98 100644 --- a/iolog.c +++ b/iolog.c @@ -110,7 +110,7 @@ int read_iolog_get(struct thread_data *td, struct io_u *io_u) { struct io_piece *ipo; unsigned long elapsed; - + while (!flist_empty(&td->io_log_list)) { int ret; @@ -141,11 +141,10 @@ int read_iolog_get(struct thread_data *td, struct io_u *io_u) elapsed = mtime_since_genesis(); if (ipo->delay > elapsed) usec_sleep(td, (ipo->delay - elapsed) * 1000); - } free(ipo); - + if (io_u->ddir != DDIR_WAIT) return 0; } @@ -239,7 +238,9 @@ restart: else if (ipo->offset > __ipo->offset) p = &(*p)->rb_right; else { - assert(ipo->len == __ipo->len); + dprint(FD_IO, "iolog: overlap %llu/%lu, %llu/%lu", + __ipo->offset, __ipo->len, + ipo->offset, ipo->len); td->io_hist_len--; rb_erase(parent, &td->io_hist_tree); remove_trim_entry(td, __ipo); @@ -370,7 +371,7 @@ static int read_iolog2(struct thread_data *td, FILE *f) ipo->fileno = fileno; ipo->file_action = file_action; } - + queue_io_piece(td, ipo); } @@ -517,10 +518,10 @@ void __finish_log(struct io_log *log, const char *name) } for (i = 0; i < log->nr_samples; i++) { - fprintf(f, "%lu, %lu, %u, %u\n", log->log[i].time, - log->log[i].val, - log->log[i].ddir, - log->log[i].bs); + fprintf(f, "%lu, %lu, %u, %u\n", + (unsigned long) log->log[i].time, + (unsigned long) log->log[i].val, + log->log[i].ddir, log->log[i].bs); } fclose(f);