X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=init.c;h=2da64ba89e1c0005f15b80a792efddaf0636e510;hb=6730b40f1f2f9a07ac6b28d39fba293fedb1f239;hp=164e411c6c8d4a9f576434422dce837edac3a988;hpb=e97412c38bedc4f365bdf4abe1ff8f6694587a86;p=fio.git diff --git a/init.c b/init.c index 164e411c..2da64ba8 100644 --- a/init.c +++ b/init.c @@ -748,13 +748,30 @@ static int fixup_options(struct thread_data *td) o->size = -1ULL; if (o->verify != VERIFY_NONE) { - if (td_write(td) && o->do_verify && o->numjobs > 1) { - log_info("Multiple writers may overwrite blocks that " - "belong to other jobs. This can cause " + if (td_write(td) && o->do_verify && o->numjobs > 1 && + (o->filename || + !(o->unique_filename && + strstr(o->filename_format, "$jobname") && + strstr(o->filename_format, "$jobnum") && + strstr(o->filename_format, "$filenum")))) { + log_info("fio: multiple writers may overwrite blocks " + "that belong to other jobs. This can cause " "verification failures.\n"); ret = warnings_fatal; } + /* + * Warn if verification is requested but no verification of any + * kind can be started due to time constraints + */ + if (td_write(td) && o->do_verify && o->timeout && + o->time_based && !td_read(td) && !o->verify_backlog) { + log_info("fio: verification read phase will never " + "start because write phase uses all of " + "runtime\n"); + ret = warnings_fatal; + } + if (!fio_option_is_set(o, refill_buffers)) o->refill_buffers = 1; @@ -895,20 +912,6 @@ static int fixup_options(struct thread_data *td) return ret; } -/* External engines are specified by "external:name.o") */ -static const char *get_engine_name(const char *str) -{ - char *p = strstr(str, ":"); - - if (!p) - return str; - - p++; - strip_blank_front(&p); - strip_blank_end(p); - return p; -} - static void init_rand_file_service(struct thread_data *td) { unsigned long nranges = td->o.nr_files << FIO_FSERVICE_SHIFT; @@ -1040,7 +1043,10 @@ int ioengine_load(struct thread_data *td) free_ioengine(td); } - engine = get_engine_name(td->o.ioengine); + /* + * Use ->ioengine_so_path if an external ioengine is specified. + */ + engine = td->o.ioengine_so_path ?: td->o.ioengine; td->io_ops = load_ioengine(td, engine); if (!td->io_ops) { log_err("fio: failed to load engine %s\n", engine);