.type = FIO_OPT_STR_STORE,
.off1 = offsetof(struct e4defrag_options, donor_name),
.help = "File used as a block donor",
+ .category = FIO_OPT_C_ENGINE,
+ .group = FIO_OPT_G_E4DEFRAG,
},
{
.name = "inplace",
.minval = 0,
.maxval = 1,
.help = "Alloc and free space inside defrag event",
+ .category = FIO_OPT_C_ENGINE,
+ .group = FIO_OPT_G_E4DEFRAG,
},
{
.name = NULL,
.type = FIO_OPT_STR_SET,
.off1 = offsetof(struct libaio_options, userspace_reap),
.help = "Use alternative user-space reap implementation",
+ .category = FIO_OPT_C_ENGINE,
+ .category = FIO_OPT_G_LIBAIO,
},
{
.name = NULL,
.type = FIO_OPT_STR_STORE,
.cb = str_hostname_cb,
.help = "Hostname for net IO engine",
+ .category = FIO_OPT_C_ENGINE,
+ .group = FIO_OPT_G_NETIO,
},
{
.name = "port",
.minval = 1,
.maxval = 65535,
.help = "Port to use for TCP or UDP net connections",
+ .category = FIO_OPT_C_ENGINE,
+ .group = FIO_OPT_G_NETIO,
},
{
.name = "protocol",
.help = "UNIX domain socket",
},
},
+ .category = FIO_OPT_C_ENGINE,
+ .group = FIO_OPT_G_NETIO,
},
#ifdef CONFIG_TCP_NODELAY
{
.type = FIO_OPT_BOOL,
.off1 = offsetof(struct netio_options, nodelay),
.help = "Use TCP_NODELAY on TCP connections",
+ .category = FIO_OPT_C_ENGINE,
+ .group = FIO_OPT_G_NETIO,
},
#endif
{
.type = FIO_OPT_STR_SET,
.off1 = offsetof(struct netio_options, listen),
.help = "Listen for incoming TCP connections",
+ .category = FIO_OPT_C_ENGINE,
+ .group = FIO_OPT_G_NETIO,
},
{
.name = "pingpong",
.type = FIO_OPT_STR_SET,
.off1 = offsetof(struct netio_options, pingpong),
.help = "Ping-pong IO requests",
+ .category = FIO_OPT_C_ENGINE,
+ .group = FIO_OPT_G_NETIO,
},
{
.name = NULL,
return add_dir_files(td, td->o.opendir);
}
-static int str_verify_offset_cb(void *data, unsigned long long *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, const char *input)
{
struct thread_data *td = data;
.help = "Offset verify header location by N bytes",
.off1 = td_var_offset(verify_offset),
.minval = sizeof(struct verify_header),
- .cb = str_verify_offset_cb,
.parent = "verify",
.hide = 1,
.category = FIO_OPT_C_IO,
.lname = "I/O nice priority",
.type = FIO_OPT_INT,
.cb = str_prio_cb,
- .off1 = td_var_offset(ioprio),
.help = "Set job IO priority value",
.minval = 0,
.maxval = 7,
.lname = "I/O nice priority class",
.type = FIO_OPT_INT,
.cb = str_prioclass_cb,
- .off1 = td_var_offset(ioprio_class),
.help = "Set job IO priority class",
.minval = 0,
.maxval = 3,
__FIO_OPT_C_STAT,
__FIO_OPT_C_LOG,
__FIO_OPT_C_PROFILE,
+ __FIO_OPT_C_ENGINE,
__FIO_OPT_C_NR,
FIO_OPT_C_GENERAL = (1U << __FIO_OPT_C_GENERAL),
FIO_OPT_C_STAT = (1U << __FIO_OPT_C_STAT),
FIO_OPT_C_LOG = (1U << __FIO_OPT_C_LOG),
FIO_OPT_C_PROFILE = (1U << __FIO_OPT_C_PROFILE),
+ FIO_OPT_C_ENGINE = (1U << __FIO_OPT_C_ENGINE),
FIO_OPT_C_INVALID = (1U << __FIO_OPT_C_NR),
};
__FIO_OPT_G_IO_BUF,
__FIO_OPT_G_TIOBENCH,
__FIO_OPT_G_ERR,
+ __FIO_OPT_G_E4DEFRAG,
+ __FIO_OPT_G_NETIO,
+ __FIO_OPT_G_LIBAIO,
+ __FIO_OPT_G_TIOPROF,
__FIO_OPT_G_NR,
FIO_OPT_G_RATE = (1U << __FIO_OPT_G_RATE),
FIO_OPT_G_IO_BUF = (1U << __FIO_OPT_G_IO_BUF),
FIO_OPT_G_TIOBENCH = (1U << __FIO_OPT_G_TIOBENCH),
FIO_OPT_G_ERR = (1U << __FIO_OPT_G_ERR),
+ FIO_OPT_G_E4DEFRAG = (1U << __FIO_OPT_G_E4DEFRAG),
+ FIO_OPT_G_NETIO = (1U << __FIO_OPT_G_NETIO),
+ FIO_OPT_G_LIBAIO = (1U << __FIO_OPT_G_LIBAIO),
+ FIO_OPT_G_TIOPROF = (1U << __FIO_OPT_G_TIOPROF),
FIO_OPT_G_INVALID = (1U << __FIO_OPT_G_NR),
};
.type = FIO_OPT_STR_VAL,
.roff1 = &size,
.help = "Size in MB",
+ .category = FIO_OPT_C_PROFILE,
+ .group = FIO_OPT_G_TIOPROF,
},
{
.name = "block",
.roff1 = &bs,
.help = "Block size in bytes",
.def = "4k",
+ .category = FIO_OPT_C_PROFILE,
+ .group = FIO_OPT_G_TIOPROF,
},
{
.name = "numruns",
.type = FIO_OPT_INT,
.roff1 = &loops,
.help = "Number of runs",
+ .category = FIO_OPT_C_PROFILE,
+ .group = FIO_OPT_G_TIOPROF,
},
{
.name = "dir",
.type = FIO_OPT_STR_STORE,
.roff1 = &dir,
.help = "Test directory",
+ .category = FIO_OPT_C_PROFILE,
+ .group = FIO_OPT_G_TIOPROF,
},
{
.name = "threads",
.type = FIO_OPT_INT,
.roff1 = &nthreads,
.help = "Number of Threads",
+ .category = FIO_OPT_C_PROFILE,
+ .group = FIO_OPT_G_TIOPROF,
},
{
.name = NULL,