X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=init.c;h=95e26b8f4624fee73bf59863a52b4a7fac58d460;hp=dc563fd212adcc6fb2b561193fb283c33369603f;hb=205a719eda8bce43609c151cbe812437aa6552de;hpb=aad918e47d119eb2043311f1a2a45ce109c047d1 diff --git a/init.c b/init.c index dc563fd2..95e26b8f 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,10 @@ static int fixup_options(struct thread_data *td) fio_gtod_offload = 1; } + td->loops = o->loops; + if (!td->loops) + td->loops = 1; + return ret; } @@ -1036,8 +1039,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 +1055,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 +1071,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 +2135,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 +2154,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 +2163,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 +2282,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':