Fix rand_seed mismatches in verify phase
[fio.git] / iolog.c
diff --git a/iolog.c b/iolog.c
index e54016d6e6c1027b0e462043e914203a9b506ae9..017b235c217a4e0ce52b298fd958386213001ef0 100644 (file)
--- a/iolog.c
+++ b/iolog.c
@@ -188,6 +188,7 @@ void log_io_piece(struct thread_data *td, struct io_u *io_u)
        ipo->file = io_u->file;
        ipo->offset = io_u->offset;
        ipo->len = io_u->buflen;
+       ipo->numberio = io_u->numberio;
 
        if (io_u_should_trim(td, io_u)) {
                flist_add_tail(&ipo->trim_list, &td->trim_list);
@@ -208,7 +209,7 @@ void log_io_piece(struct thread_data *td, struct io_u *io_u)
         * drop the old one, which we rely on the rb insert/lookup for
         * handling.
         */
-       if ((!td_random(td) || !td->o.overwrite) &&
+       if (((!td->o.verifysort) || !td_random(td) || !td->o.overwrite) &&
              (file_randommap(td, ipo->file) || td->o.verify == VERIFY_NONE)) {
                INIT_FLIST_HEAD(&ipo->list);
                flist_add_tail(&ipo->list, &td->io_hist_list);
@@ -315,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")) {
@@ -479,17 +481,22 @@ int init_iolog(struct thread_data *td)
        int ret = 0;
 
        if (td->o.read_iolog_file) {
+               int need_swap;
+
                /*
                 * Check if it's a blktrace file and load that if possible.
                 * Otherwise assume it's a normal log file and load that.
                 */
-               if (is_blktrace(td->o.read_iolog_file))
-                       ret = load_blktrace(td, td->o.read_iolog_file);
+               if (is_blktrace(td->o.read_iolog_file, &need_swap))
+                       ret = load_blktrace(td, td->o.read_iolog_file, need_swap);
                else
                        ret = init_iolog_read(td);
        } else if (td->o.write_iolog_file)
                ret = init_iolog_write(td);
 
+       if (ret)
+               td_verror(td, EINVAL, "failed initializing iolog");
+
        return ret;
 }