X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=options.c;h=3112d65e5297f5fb66902c2c237abf7adf832ed6;hp=01d23865a968952606006e3a57dd3e3a21d323d5;hb=90059d65bde4804e4da07401ad6902c1d956b592;hpb=819a968068aae65bca68ddc7805c01669707b880 diff --git a/options.c b/options.c index 01d23865..3112d65e 100644 --- a/options.c +++ b/options.c @@ -8,6 +8,7 @@ #include "fio.h" #include "parse.h" +#include "fls.h" #define td_var_offset(var) ((size_t) &((struct thread_options *)0)->var) @@ -203,17 +204,37 @@ static int str_opendir_cb(void *data, const char fio_unused *str) return add_dir_files(td, td->o.opendir); } -static int str_header_offset_cb(void *data, unsigned int *off) +static int str_verify_offset_cb(void *data, unsigned int *off) { struct thread_data *td = data; + if (*off && *off < sizeof(struct verify_header)) { - log_err("fio: header_offset too small\n"); + log_err("fio: verify_offset too small\n"); return 1; } - td->o.header_offset = *off; + + td->o.verify_offset = *off; return 0; } +static int str_verify_pattern_cb(void *data, unsigned int *off) +{ + struct thread_data *td = data; + unsigned int msb; + + msb = fls(*off); + if (msb <= 8) + td->o.verify_pattern_bytes = 1; + else if (msb <= 16) + td->o.verify_pattern_bytes = 2; + else if (msb <= 24) + td->o.verify_pattern_bytes = 3; + else + td->o.verify_pattern_bytes = 4; + + td->o.verify_pattern = *off; + return 0; +} #define __stringify_1(x) #x #define __stringify(x) __stringify_1(x) @@ -615,18 +636,25 @@ static struct fio_option options[] = { .def = "1", }, { - .name = "header_interval", + .name = "verify_interval", .type = FIO_OPT_STR_VAL_INT, - .off1 = td_var_offset(header_interval), + .off1 = td_var_offset(verify_interval), .minval = 2 * sizeof(struct verify_header), - .help = "Store buffer header every N bytes", + .help = "Store verify buffer header every N bytes", }, { - .name = "header_offset", + .name = "verify_offset", .type = FIO_OPT_STR_VAL_INT, - .help = "Offset header location by N bytes", + .help = "Offset verify header location by N bytes", .def = "0", - .cb = str_header_offset_cb, + .cb = str_verify_offset_cb, + }, + { + .name = "verify_pattern", + .type = FIO_OPT_INT, + .cb = str_verify_pattern_cb, + .maxval = UINT_MAX, + .help = "Fill pattern for IO buffers", }, { .name = "write_iolog",