gettime: offset CPU cycle counter by initial value
[fio.git] / init.c
diff --git a/init.c b/init.c
index 9fbc477fd760651d117dc1bd37547bab98454ae9..427768c3531669999f04b044fa991764dbce2d76 100644 (file)
--- a/init.c
+++ b/init.c
@@ -758,6 +758,12 @@ static int fixup_options(struct thread_data *td)
                ret = 1;
        }
 
+       if (fio_option_is_set(o, gtod_cpu)) {
+               fio_gtod_init();
+               fio_gtod_set_cpu(o->gtod_cpu);
+               fio_gtod_offload = 1;
+       }
+
        return ret;
 }
 
@@ -926,7 +932,13 @@ static void init_flags(struct thread_data *td)
                td->flags |= TD_F_READ_IOLOG;
        if (o->refill_buffers)
                td->flags |= TD_F_REFILL_BUFFERS;
-       if (o->scramble_buffers)
+       /*
+        * Scramble by default, but not if zero_buffer is true and has been
+        * set. But if scramble_buffers has been set, always scramble.
+        */
+       if (o->scramble_buffers && ((!o->zero_buffers &&
+           fio_option_is_set(o, zero_buffers)) ||
+           fio_option_is_set(o, scramble_buffers)))
                td->flags |= TD_F_SCRAMBLE_BUFFERS;
        if (o->verify != VERIFY_NONE)
                td->flags |= TD_F_VER_NONE;
@@ -2379,12 +2391,6 @@ int parse_options(int argc, char *argv[])
                return 0;
        }
 
-       if (def_thread.o.gtod_offload) {
-               fio_gtod_init();
-               fio_gtod_offload = 1;
-               fio_gtod_cpu = def_thread.o.gtod_cpu;
-       }
-
        if (output_format == FIO_OUTPUT_NORMAL)
                log_info("%s\n", fio_version_string);