Fix replay of IO pattern with multiple open files
[fio.git] / iolog.c
diff --git a/iolog.c b/iolog.c
index 1d61ba23ac3ba82b6334ad45dc0a16aee7babd49..b73c208e468e5e948c799d4a2d8d9beb72c60f49 100644 (file)
--- a/iolog.c
+++ b/iolog.c
@@ -239,7 +239,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);
@@ -314,6 +316,7 @@ static int read_iolog2(struct thread_data *td, FILE *f)
                                                                        act);
                                continue;
                        }
+                       fileno = get_fileno(td, fname);
                } else if (r == 2) {
                        rw = DDIR_INVAL;
                        if (!strcmp(act, "add")) {
@@ -532,7 +535,7 @@ void finish_log_named(struct thread_data *td, struct io_log *log,
 {
        char file_name[256], *p;
 
-       snprintf(file_name, 200, "%s_%s.log", prefix, postfix);
+       snprintf(file_name, sizeof(file_name), "%s_%s.log", prefix, postfix);
        p = basename(file_name);
        __finish_log(log, p);
 }