X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=init.c;h=a126f79f1b9c1a4b20bd388f71013d35179e2b86;hb=b84113993b3aa40dc33ba101cd39a95d88732811;hp=dc563fd212adcc6fb2b561193fb283c33369603f;hpb=aad918e47d119eb2043311f1a2a45ce109c047d1;p=fio.git diff --git a/init.c b/init.c index dc563fd2..a126f79f 100644 --- a/init.c +++ b/init.c @@ -596,8 +596,7 @@ static int fixup_options(struct thread_data *td) if (o->norandommap && o->verify != VERIFY_NONE && !fixed_block_size(o)) { log_err("fio: norandommap given for variable block sizes, " - "verify disabled\n"); - o->verify = VERIFY_NONE; + "verify limited\n"); ret = warnings_fatal; } if (o->bs_unaligned && (o->odirect || td->io_ops->flags & FIO_RAWIO)) @@ -764,6 +763,17 @@ static int fixup_options(struct thread_data *td) fio_gtod_offload = 1; } + td->loops = o->loops; + if (!td->loops) + td->loops = 1; + + if (td->o.block_error_hist && td->o.nr_files != 1) { + log_err("fio: block error histogram only available with " + "with a single file per job, but %d files " + "provided\n", td->o.nr_files); + ret = 1; + } + return ret; } @@ -1036,8 +1046,14 @@ static char *make_filename(char *buf, size_t buf_size,struct thread_options *o, ret = snprintf(dst, dst_left, "%s", jobname); if (ret < 0) break; - dst += ret; - dst_left -= ret; + else if (ret > dst_left) { + log_err("fio: truncated filename\n"); + dst += dst_left; + dst_left = 0; + } else { + dst += ret; + dst_left -= ret; + } break; } case FPRE_JOBNUM: { @@ -1046,8 +1062,14 @@ static char *make_filename(char *buf, size_t buf_size,struct thread_options *o, ret = snprintf(dst, dst_left, "%d", jobnum); if (ret < 0) break; - dst += ret; - dst_left -= ret; + else if (ret > dst_left) { + log_err("fio: truncated filename\n"); + dst += dst_left; + dst_left = 0; + } else { + dst += ret; + dst_left -= ret; + } break; } case FPRE_FILENUM: { @@ -1056,8 +1078,14 @@ static char *make_filename(char *buf, size_t buf_size,struct thread_options *o, ret = snprintf(dst, dst_left, "%d", filenum); if (ret < 0) break; - dst += ret; - dst_left -= ret; + else if (ret > dst_left) { + log_err("fio: truncated filename\n"); + dst += dst_left; + dst_left = 0; + } else { + dst += ret; + dst_left -= ret; + } break; } default: @@ -2114,6 +2142,7 @@ int parse_cmd_line(int argc, char *argv[], int client_type) td = NULL; } do_exit++; + exit_val = 1; break; } fio_options_set_ioengine_opts(l_opts, td); @@ -2132,6 +2161,7 @@ int parse_cmd_line(int argc, char *argv[], int client_type) td = NULL; } do_exit++; + exit_val = 1; } if (!ret && !strcmp(opt, "ioengine")) { @@ -2140,6 +2170,7 @@ int parse_cmd_line(int argc, char *argv[], int client_type) put_job(td); td = NULL; do_exit++; + exit_val = 1; break; } fio_options_set_ioengine_opts(l_opts, td); @@ -2258,12 +2289,18 @@ int parse_cmd_line(int argc, char *argv[], int client_type) break; } case 'W': + if (trigger_file) + free(trigger_file); trigger_file = strdup(optarg); break; case 'H': + if (trigger_cmd) + free(trigger_cmd); trigger_cmd = strdup(optarg); break; case 'J': + if (trigger_remote_cmd) + free(trigger_remote_cmd); trigger_remote_cmd = strdup(optarg); break; case 'B':