X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=options.c;h=e040495d23169833a81581e75a58231c6e32baa5;hb=71deafc693ad77947f5c3f72e7247eefcb97bd63;hp=5c6ec2321bd13819742ed9056318a222a51f88d3;hpb=3a5db9201bf7b1717f63cb8f7dbd025903117f70;p=fio.git diff --git a/options.c b/options.c index 5c6ec232..e040495d 100644 --- a/options.c +++ b/options.c @@ -917,7 +917,7 @@ static int str_opendir_cb(void *data, const char fio_unused *str) static int pattern_cb(char *pattern, unsigned int max_size, const char *input, unsigned int *pattern_bytes) { - long off; + long off = 0; int i = 0, j = 0, len, k, base = 10; uint32_t pattern_length; char *loc1, *loc2; @@ -983,6 +983,8 @@ static int pattern_cb(char *pattern, unsigned int max_size, */ fill: pattern_length = i; + if (!i && !off) + i = 1; while (i > 1 && i * 2 <= max_size) { memcpy(&pattern[i], &pattern[0], i); i *= 2; @@ -1062,7 +1064,7 @@ static int str_verify_pattern_cb(void *data, const char *input) /* * VERIFY_META could already be set */ - if (!ret && td->o.verify == VERIFY_NONE) + if (!ret && !fio_option_is_set(&td->o, verify)) td->o.verify = VERIFY_PATTERN; return ret; @@ -1897,6 +1899,11 @@ struct fio_option fio_options[FIO_MAX_OPTS] = { .oval = FIO_RAND_GEN_LFSR, .help = "Variable length LFSR", }, + { + .ival = "tausworthe64", + .oval = FIO_RAND_GEN_TAUSWORTHE64, + .help = "64-bit Tausworthe variant", + }, }, .category = FIO_OPT_C_IO, .group = FIO_OPT_G_RANDOM, @@ -2395,6 +2402,10 @@ struct fio_option fio_options[FIO_MAX_OPTS] = { .oval = VERIFY_META, .help = "Use io information", }, + { .ival = "pattern", + .oval = VERIFY_PATTERN_NO_HDR, + .help = "Verify strict pattern", + }, { .ival = "null", .oval = VERIFY_NULL, @@ -3039,6 +3050,26 @@ struct fio_option fio_options[FIO_MAX_OPTS] = { .category = FIO_OPT_C_FILE, .def = "0", }, + { + .name = "allow_file_create", + .lname = "Allow file create", + .type = FIO_OPT_BOOL, + .off1 = td_var_offset(allow_create), + .help = "Permit fio to create files, if they don't exist", + .def = "1", + .category = FIO_OPT_C_FILE, + .group = FIO_OPT_G_FILENAME, + }, + { + .name = "allow_mounted_write", + .lname = "Allow mounted write", + .type = FIO_OPT_BOOL, + .off1 = td_var_offset(allow_mounted_write), + .help = "Allow writes to a mounted partition", + .def = "0", + .category = FIO_OPT_C_FILE, + .group = FIO_OPT_G_FILENAME, + }, { .name = "pre_read", .lname = "Pre-read files", @@ -4062,7 +4093,7 @@ static void show_closest_option(const char *opt) i++; } - if (best_option != -1) + if (best_option != -1 && string_distance_ok(name, best_distance)) log_err("Did you mean %s?\n", fio_options[best_option].name); free(name); @@ -4334,7 +4365,7 @@ static int opt_is_set(struct thread_options *o, struct fio_option *opt) opt_off = opt - &fio_options[0]; index = opt_off / (8 * sizeof(uint64_t)); offset = opt_off & ((8 * sizeof(uint64_t)) - 1); - return (o->set_options[index] & (1UL << offset)) != 0; + return (o->set_options[index] & ((uint64_t)1 << offset)) != 0; } int __fio_option_is_set(struct thread_options *o, unsigned int off1) @@ -4359,5 +4390,5 @@ void fio_option_mark_set(struct thread_options *o, struct fio_option *opt) opt_off = opt - &fio_options[0]; index = opt_off / (8 * sizeof(uint64_t)); offset = opt_off & ((8 * sizeof(uint64_t)) - 1); - o->set_options[index] |= 1UL << offset; + o->set_options[index] |= (uint64_t)1 << offset; }