X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;ds=sidebyside;f=init.c;h=bb53a1e2bc097a256172db7e46075bd5658704da;hb=91e475290c03db58f856a62f763d29e964934114;hp=427768c3531669999f04b044fa991764dbce2d76;hpb=79c896a122a7a39b840257215e622bdeff8272f1;p=fio.git diff --git a/init.c b/init.c index 427768c3..bb53a1e2 100644 --- a/init.c +++ b/init.c @@ -933,12 +933,16 @@ static void init_flags(struct thread_data *td) if (o->refill_buffers) td->flags |= TD_F_REFILL_BUFFERS; /* - * Scramble by default, but not if zero_buffer is true and has been - * set. But if scramble_buffers has been set, always scramble. + * Always scramble buffers if asked to */ - if (o->scramble_buffers && ((!o->zero_buffers && - fio_option_is_set(o, zero_buffers)) || - fio_option_is_set(o, scramble_buffers))) + if (o->scramble_buffers && fio_option_is_set(o, scramble_buffers)) + td->flags |= TD_F_SCRAMBLE_BUFFERS; + /* + * But also scramble buffers, unless we were explicitly asked + * to zero them. + */ + if (o->scramble_buffers && !(o->zero_buffers && + fio_option_is_set(o, zero_buffers))) td->flags |= TD_F_SCRAMBLE_BUFFERS; if (o->verify != VERIFY_NONE) td->flags |= TD_F_VER_NONE; @@ -1032,8 +1036,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: { @@ -1042,8 +1052,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: { @@ -1052,8 +1068,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: @@ -2234,7 +2256,7 @@ int parse_cmd_line(int argc, char *argv[], int client_type) case 'T': did_arg = 1; do_exit++; - exit_val = fio_monotonic_clocktest(); + exit_val = fio_monotonic_clocktest(1); break; case 'G': did_arg = 1; @@ -2254,12 +2276,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':