Fix header_interval minimum value
[fio.git] / options.c
index 829b808ce5be554f1f9092dbfdf9c7c022095dfb..01d23865a968952606006e3a57dd3e3a21d323d5 100644 (file)
--- a/options.c
+++ b/options.c
@@ -203,6 +203,17 @@ 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)
+{
+       struct thread_data *td = data;
+       if (*off && *off < sizeof(struct verify_header)) {
+               log_err("fio: header_offset too small\n");
+               return 1;
+       }
+       td->o.header_offset = *off;
+       return 0;
+}
+
 
 #define __stringify_1(x)       #x
 #define __stringify(x)         __stringify_1(x)
@@ -607,8 +618,15 @@ static struct fio_option options[] = {
                .name   = "header_interval",
                .type   = FIO_OPT_STR_VAL_INT,
                .off1   = td_var_offset(header_interval),
+               .minval = 2 * sizeof(struct verify_header),
                .help   = "Store buffer header every N bytes",
-               .def    = "0",
+       },
+       {
+               .name   = "header_offset",
+               .type   = FIO_OPT_STR_VAL_INT,
+               .help   = "Offset header location by N bytes",
+               .def    = "0",
+               .cb     = str_header_offset_cb, 
        },
        {
                .name   = "write_iolog",