X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=options.c;h=35a08d3aa6554a238f457966922993708b3b9db7;hp=829b808ce5be554f1f9092dbfdf9c7c022095dfb;hb=86739fcc2fec07b5acd42004fea038e0c3179732;hpb=3f9f4e2631c4f5d33f125dd71db20c1773d22c91 diff --git a/options.c b/options.c index 829b808c..35a08d3a 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,6 +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_verify_offset_cb(void *data, unsigned int *off) +{ + struct thread_data *td = data; + + if (*off && *off < sizeof(struct verify_header)) { + log_err("fio: verify_offset too small\n"); + return 1; + } + + 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) @@ -604,11 +636,24 @@ 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), - .help = "Store buffer header every N bytes", - .def = "0", + .off1 = td_var_offset(verify_interval), + .minval = 2 * sizeof(struct verify_header), + .help = "Store verify buffer header every N bytes", + }, + { + .name = "verify_offset", + .type = FIO_OPT_STR_VAL_INT, + .help = "Offset verify header location by N bytes", + .def = "0", + .cb = str_verify_offset_cb, + }, + { + .name = "verify_pattern", + .type = FIO_OPT_INT, + .cb = str_verify_pattern_cb, + .help = "Fill pattern for IO buffers", }, { .name = "write_iolog",