init: unify 't' time period
[fio.git] / init.c
diff --git a/init.c b/init.c
index 353c99bd56bfeeb1a1394b5d700b71087b2e6eae..ede0a8b97c773b2dd971c259c2f05c306dd84afa 100644 (file)
--- a/init.c
+++ b/init.c
@@ -531,7 +531,7 @@ static void put_job(struct thread_data *td)
 
 static int __setup_rate(struct thread_data *td, enum fio_ddir ddir)
 {
-       unsigned int bs = td->o.min_bs[ddir];
+       unsigned long long bs = td->o.min_bs[ddir];
 
        assert(ddir_rw(ddir));
 
@@ -594,13 +594,19 @@ static int fixup_options(struct thread_data *td)
        struct thread_options *o = &td->o;
        int ret = 0;
 
+       if (read_only && (td_write(td) || td_trim(td))) {
+               log_err("fio: trim and write operations are not allowed"
+                        " with the --readonly parameter.\n");
+               ret |= 1;
+       }
+
 #ifndef CONFIG_PSHARED
        if (!o->use_thread) {
                log_info("fio: this platform does not support process shared"
                         " mutexes, forcing use of threads. Use the 'thread'"
                         " option to get rid of this warning.\n");
                o->use_thread = 1;
-               ret = warnings_fatal;
+               ret |= warnings_fatal;
        }
 #endif
 
@@ -608,7 +614,7 @@ static int fixup_options(struct thread_data *td)
                log_err("fio: read iolog overrides write_iolog\n");
                free(o->write_iolog_file);
                o->write_iolog_file = NULL;
-               ret = warnings_fatal;
+               ret |= warnings_fatal;
        }
 
        /*
@@ -662,7 +668,7 @@ static int fixup_options(struct thread_data *td)
            !o->norandommap) {
                log_err("fio: Any use of blockalign= turns off randommap\n");
                o->norandommap = 1;
-               ret = warnings_fatal;
+               ret |= warnings_fatal;
        }
 
        if (!o->file_size_high)
@@ -680,7 +686,7 @@ static int fixup_options(struct thread_data *td)
            && !fixed_block_size(o))  {
                log_err("fio: norandommap given for variable block sizes, "
                        "verify limited\n");
-               ret = warnings_fatal;
+               ret |= warnings_fatal;
        }
        if (o->bs_unaligned && (o->odirect || td_ioengine_flagged(td, FIO_RAWIO)))
                log_err("fio: bs_unaligned may not work with raw io\n");
@@ -724,7 +730,7 @@ static int fixup_options(struct thread_data *td)
                log_err("fio: checking for in-flight overlaps when the "
                        "io_submit_mode is offload is not supported\n");
                o->serialize_overlap = 0;
-               ret = warnings_fatal;
+               ret |= warnings_fatal;
        }
 
        if (o->nr_files > td->files_index)
@@ -738,7 +744,7 @@ static int fixup_options(struct thread_data *td)
            ((o->ratemin[DDIR_READ] + o->ratemin[DDIR_WRITE] + o->ratemin[DDIR_TRIM]) &&
            (o->rate_iops_min[DDIR_READ] + o->rate_iops_min[DDIR_WRITE] + o->rate_iops_min[DDIR_TRIM]))) {
                log_err("fio: rate and rate_iops are mutually exclusive\n");
-               ret = 1;
+               ret |= 1;
        }
        if ((o->rate[DDIR_READ] && (o->rate[DDIR_READ] < o->ratemin[DDIR_READ])) ||
            (o->rate[DDIR_WRITE] && (o->rate[DDIR_WRITE] < o->ratemin[DDIR_WRITE])) ||
@@ -747,13 +753,13 @@ static int fixup_options(struct thread_data *td)
            (o->rate_iops[DDIR_WRITE] && (o->rate_iops[DDIR_WRITE] < o->rate_iops_min[DDIR_WRITE])) ||
            (o->rate_iops[DDIR_TRIM] && (o->rate_iops[DDIR_TRIM] < o->rate_iops_min[DDIR_TRIM]))) {
                log_err("fio: minimum rate exceeds rate\n");
-               ret = 1;
+               ret |= 1;
        }
 
        if (!o->timeout && o->time_based) {
                log_err("fio: time_based requires a runtime/timeout setting\n");
                o->time_based = 0;
-               ret = warnings_fatal;
+               ret |= warnings_fatal;
        }
 
        if (o->fill_device && !o->size)
@@ -769,7 +775,7 @@ static int fixup_options(struct thread_data *td)
                        log_info("fio: multiple writers may overwrite blocks "
                                "that belong to other jobs. This can cause "
                                "verification failures.\n");
-                       ret = warnings_fatal;
+                       ret |= warnings_fatal;
                }
 
                /*
@@ -781,7 +787,7 @@ static int fixup_options(struct thread_data *td)
                        log_info("fio: verification read phase will never "
                                 "start because write phase uses all of "
                                 "runtime\n");
-                       ret = warnings_fatal;
+                       ret |= warnings_fatal;
                }
 
                if (!fio_option_is_set(o, refill_buffers))
@@ -817,7 +823,7 @@ static int fixup_options(struct thread_data *td)
                if (td_ioengine_flagged(td, FIO_PIPEIO)) {
                        log_info("fio: cannot pre-read files with an IO engine"
                                 " that isn't seekable. Pre-read disabled.\n");
-                       ret = warnings_fatal;
+                       ret |= warnings_fatal;
                }
        }
 
@@ -841,7 +847,7 @@ static int fixup_options(struct thread_data *td)
                         " this warning\n");
                o->fsync_blocks = o->fdatasync_blocks;
                o->fdatasync_blocks = 0;
-               ret = warnings_fatal;
+               ret |= warnings_fatal;
        }
 #endif
 
@@ -854,7 +860,7 @@ static int fixup_options(struct thread_data *td)
                log_err("fio: Windows does not support direct or non-buffered io with"
                                " the synchronous ioengines. Use the 'windowsaio' ioengine"
                                " with 'direct=1' and 'iodepth=1' instead.\n");
-               ret = 1;
+               ret |= 1;
        }
 #endif
 
@@ -885,9 +891,9 @@ static int fixup_options(struct thread_data *td)
         * If size is set but less than the min block size, complain
         */
        if (o->size && o->size < td_min_bs(td)) {
-               log_err("fio: size too small, must not be less than minimum block size: %llu < %u\n",
+               log_err("fio: size too small, must not be less than minimum block size: %llu < %llu\n",
                        (unsigned long long) o->size, td_min_bs(td));
-               ret = 1;
+               ret |= 1;
        }
 
        /*
@@ -904,7 +910,7 @@ static int fixup_options(struct thread_data *td)
 
        if (td_ioengine_flagged(td, FIO_NOEXTEND) && o->file_append) {
                log_err("fio: can't append/extent with IO engine %s\n", td->io_ops->name);
-               ret = 1;
+               ret |= 1;
        }
 
        if (fio_option_is_set(o, gtod_cpu)) {
@@ -921,7 +927,7 @@ static int fixup_options(struct thread_data *td)
                log_err("fio: block error histogram only available "
                        "with a single file per job, but %d files "
                        "provided\n", o->nr_files);
-               ret = 1;
+               ret |= 1;
        }
 
        if (fio_option_is_set(o, clat_percentiles) &&
@@ -935,7 +941,7 @@ static int fixup_options(struct thread_data *td)
                   o->lat_percentiles && o->clat_percentiles) {
                log_err("fio: lat_percentiles and clat_percentiles are "
                        "mutually exclusive\n");
-               ret = 1;
+               ret |= 1;
        }
 
        if (o->disable_lat)
@@ -2152,7 +2158,7 @@ static void usage(const char *name)
        printf("  --showcmd\t\tTurn a job file into command line options\n");
        printf("  --eta=when\t\tWhen ETA estimate should be printed\n");
        printf("            \t\tMay be \"always\", \"never\" or \"auto\"\n");
-       printf("  --eta-newline=time\tForce a new line for every 'time'");
+       printf("  --eta-newline=t\tForce a new line for every 't'");
        printf(" period passed\n");
        printf("  --status-interval=t\tForce full status dump every");
        printf(" 't' period passed\n");