projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
gfio: terminate and destroy clients before calling gtk_main_quit()
[fio.git]
/
options.c
diff --git
a/options.c
b/options.c
index 8034cd7dad755b58c5f546e64fb083be79ec49a4..714741a038ae94e248357a3295cb78db155ec7d9 100644
(file)
--- a/
options.c
+++ b/
options.c
@@
-160,7
+160,6
@@
static int bssplit_ddir(struct thread_data *td, int ddir, char *str)
qsort(bssplit, td->o.bssplit_nr[ddir], sizeof(struct bssplit), bs_cmp);
td->o.bssplit[ddir] = bssplit;
return 0;
qsort(bssplit, td->o.bssplit_nr[ddir], sizeof(struct bssplit), bs_cmp);
td->o.bssplit[ddir] = bssplit;
return 0;
-
}
static int str_bssplit_cb(void *data, const char *input)
}
static int str_bssplit_cb(void *data, const char *input)
@@
-852,12
+851,14
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.type = FIO_OPT_STR_STORE,
.off1 = td_var_offset(description),
.help = "Text job description",
.type = FIO_OPT_STR_STORE,
.off1 = td_var_offset(description),
.help = "Text job description",
+ .category = FIO_OPT_G_DESC,
},
{
.name = "name",
.type = FIO_OPT_STR_STORE,
.off1 = td_var_offset(name),
.help = "Name of this job",
},
{
.name = "name",
.type = FIO_OPT_STR_STORE,
.off1 = td_var_offset(name),
.help = "Name of this job",
+ .category = FIO_OPT_G_DESC,
},
{
.name = "directory",
},
{
.name = "directory",
@@
-865,6
+866,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off1 = td_var_offset(directory),
.cb = str_directory_cb,
.help = "Directory to store files in",
.off1 = td_var_offset(directory),
.cb = str_directory_cb,
.help = "Directory to store files in",
+ .category = FIO_OPT_G_FILE,
},
{
.name = "filename",
},
{
.name = "filename",
@@
-873,6
+875,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.cb = str_filename_cb,
.prio = -1, /* must come after "directory" */
.help = "File(s) to use for the workload",
.cb = str_filename_cb,
.prio = -1, /* must come after "directory" */
.help = "File(s) to use for the workload",
+ .category = FIO_OPT_G_FILE,
},
{
.name = "kb_base",
},
{
.name = "kb_base",
@@
-882,6
+885,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.prio = 1,
.def = "1024",
.help = "How many bytes per KB for reporting (1000 or 1024)",
.prio = 1,
.def = "1024",
.help = "How many bytes per KB for reporting (1000 or 1024)",
+ .category = FIO_OPT_G_MISC,
},
{
.name = "lockfile",
},
{
.name = "lockfile",
@@
-891,6
+895,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.help = "Lock file when doing IO to it",
.parent = "filename",
.def = "none",
.help = "Lock file when doing IO to it",
.parent = "filename",
.def = "none",
+ .category = FIO_OPT_G_FILE,
.posval = {
{ .ival = "none",
.oval = FILE_LOCK_NONE,
.posval = {
{ .ival = "none",
.oval = FILE_LOCK_NONE,
@@
-913,6
+918,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off1 = td_var_offset(opendir),
.cb = str_opendir_cb,
.help = "Recursively add files from this directory and down",
.off1 = td_var_offset(opendir),
.cb = str_opendir_cb,
.help = "Recursively add files from this directory and down",
+ .category = FIO_OPT_G_FILE,
},
{
.name = "rw",
},
{
.name = "rw",
@@
-923,6
+929,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.help = "IO direction",
.def = "read",
.verify = rw_verify,
.help = "IO direction",
.def = "read",
.verify = rw_verify,
+ .category = FIO_OPT_G_IO_DDIR,
.posval = {
{ .ival = "read",
.oval = TD_DDIR_READ,
.posval = {
{ .ival = "read",
.oval = TD_DDIR_READ,
@@
-956,6
+963,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off1 = td_var_offset(rw_seq),
.help = "IO offset generator modifier",
.def = "sequential",
.off1 = td_var_offset(rw_seq),
.help = "IO offset generator modifier",
.def = "sequential",
+ .category = FIO_OPT_G_IO_DDIR,
.posval = {
{ .ival = "sequential",
.oval = RW_SEQ_SEQ,
.posval = {
{ .ival = "sequential",
.oval = RW_SEQ_SEQ,
@@
-974,6
+982,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off1 = td_var_offset(ioengine),
.help = "IO engine to use",
.def = FIO_PREFERRED_ENGINE,
.off1 = td_var_offset(ioengine),
.help = "IO engine to use",
.def = FIO_PREFERRED_ENGINE,
+ .category = FIO_OPT_G_IO,
.posval = {
{ .ival = "sync",
.help = "Use read/write",
.posval = {
{ .ival = "sync",
.help = "Use read/write",
@@
-1061,6
+1070,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.help = "Number of IO buffers to keep in flight",
.minval = 1,
.def = "1",
.help = "Number of IO buffers to keep in flight",
.minval = 1,
.def = "1",
+ .category = FIO_OPT_G_IO,
},
{
.name = "iodepth_batch",
},
{
.name = "iodepth_batch",
@@
-1071,6
+1081,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.parent = "iodepth",
.minval = 1,
.def = "1",
.parent = "iodepth",
.minval = 1,
.def = "1",
+ .category = FIO_OPT_G_IO,
},
{
.name = "iodepth_batch_complete",
},
{
.name = "iodepth_batch_complete",
@@
-1080,6
+1091,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.parent = "iodepth",
.minval = 0,
.def = "1",
.parent = "iodepth",
.minval = 0,
.def = "1",
+ .category = FIO_OPT_G_IO,
},
{
.name = "iodepth_low",
},
{
.name = "iodepth_low",
@@
-1087,12
+1099,14
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off1 = td_var_offset(iodepth_low),
.help = "Low water mark for queuing depth",
.parent = "iodepth",
.off1 = td_var_offset(iodepth_low),
.help = "Low water mark for queuing depth",
.parent = "iodepth",
+ .category = FIO_OPT_G_IO,
},
{
.name = "size",
.type = FIO_OPT_STR_VAL,
.cb = str_size_cb,
.help = "Total size of device or files",
},
{
.name = "size",
.type = FIO_OPT_STR_VAL,
.cb = str_size_cb,
.help = "Total size of device or files",
+ .category = FIO_OPT_G_IO,
},
{
.name = "fill_device",
},
{
.name = "fill_device",
@@
-1101,6
+1115,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off1 = td_var_offset(fill_device),
.help = "Write until an ENOSPC error occurs",
.def = "0",
.off1 = td_var_offset(fill_device),
.help = "Write until an ENOSPC error occurs",
.def = "0",
+ .category = FIO_OPT_G_IO,
},
{
.name = "filesize",
},
{
.name = "filesize",
@@
-1109,6
+1124,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off2 = td_var_offset(file_size_high),
.minval = 1,
.help = "Size of individual files",
.off2 = td_var_offset(file_size_high),
.minval = 1,
.help = "Size of individual files",
+ .category = FIO_OPT_G_IO | FIO_OPT_G_FILE,
},
{
.name = "offset",
},
{
.name = "offset",
@@
-1117,6
+1133,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off1 = td_var_offset(start_offset),
.help = "Start IO from this offset",
.def = "0",
.off1 = td_var_offset(start_offset),
.help = "Start IO from this offset",
.def = "0",
+ .category = FIO_OPT_G_IO,
},
{
.name = "bs",
},
{
.name = "bs",
@@
-1128,6
+1145,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.help = "Block size unit",
.def = "4k",
.parent = "rw",
.help = "Block size unit",
.def = "4k",
.parent = "rw",
+ .category = FIO_OPT_G_IO,
},
{
.name = "ba",
},
{
.name = "ba",
@@
-1138,6
+1156,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.minval = 1,
.help = "IO block offset alignment",
.parent = "rw",
.minval = 1,
.help = "IO block offset alignment",
.parent = "rw",
+ .category = FIO_OPT_G_IO | FIO_OPT_G_IO_BUF,
},
{
.name = "bsrange",
},
{
.name = "bsrange",
@@
-1150,6
+1169,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.minval = 1,
.help = "Set block size range (in more detail than bs)",
.parent = "rw",
.minval = 1,
.help = "Set block size range (in more detail than bs)",
.parent = "rw",
+ .category = FIO_OPT_G_IO,
},
{
.name = "bssplit",
},
{
.name = "bssplit",
@@
-1157,6
+1177,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.cb = str_bssplit_cb,
.help = "Set a specific mix of block sizes",
.parent = "rw",
.cb = str_bssplit_cb,
.help = "Set a specific mix of block sizes",
.parent = "rw",
+ .category = FIO_OPT_G_IO,
},
{
.name = "bs_unaligned",
},
{
.name = "bs_unaligned",
@@
-1165,6
+1186,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off1 = td_var_offset(bs_unaligned),
.help = "Don't sector align IO buffer sizes",
.parent = "rw",
.off1 = td_var_offset(bs_unaligned),
.help = "Don't sector align IO buffer sizes",
.parent = "rw",
+ .category = FIO_OPT_G_IO,
},
{
.name = "randrepeat",
},
{
.name = "randrepeat",
@@
-1173,6
+1195,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.help = "Use repeatable random IO pattern",
.def = "1",
.parent = "rw",
.help = "Use repeatable random IO pattern",
.def = "1",
.parent = "rw",
+ .category = FIO_OPT_G_IO | FIO_OPT_G_RAND,
},
{
.name = "use_os_rand",
},
{
.name = "use_os_rand",
@@
-1181,6
+1204,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.help = "Set to use OS random generator",
.def = "0",
.parent = "rw",
.help = "Set to use OS random generator",
.def = "0",
.parent = "rw",
+ .category = FIO_OPT_G_RAND,
},
{
.name = "norandommap",
},
{
.name = "norandommap",
@@
-1188,6
+1212,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off1 = td_var_offset(norandommap),
.help = "Accept potential duplicate random blocks",
.parent = "rw",
.off1 = td_var_offset(norandommap),
.help = "Accept potential duplicate random blocks",
.parent = "rw",
+ .category = FIO_OPT_G_RAND,
},
{
.name = "softrandommap",
},
{
.name = "softrandommap",
@@
-1196,6
+1221,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.help = "Set norandommap if randommap allocation fails",
.parent = "norandommap",
.def = "0",
.help = "Set norandommap if randommap allocation fails",
.parent = "norandommap",
.def = "0",
+ .category = FIO_OPT_G_RAND,
},
{
.name = "nrfiles",
},
{
.name = "nrfiles",
@@
-1204,12
+1230,14
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off1 = td_var_offset(nr_files),
.help = "Split job workload between this number of files",
.def = "1",
.off1 = td_var_offset(nr_files),
.help = "Split job workload between this number of files",
.def = "1",
+ .category = FIO_OPT_G_FILE,
},
{
.name = "openfiles",
.type = FIO_OPT_INT,
.off1 = td_var_offset(open_files),
.help = "Number of files to keep open at the same time",
},
{
.name = "openfiles",
.type = FIO_OPT_INT,
.off1 = td_var_offset(open_files),
.help = "Number of files to keep open at the same time",
+ .category = FIO_OPT_G_FILE,
},
{
.name = "file_service_type",
},
{
.name = "file_service_type",
@@
-1218,6
+1246,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off1 = td_var_offset(file_service_type),
.help = "How to select which file to service next",
.def = "roundrobin",
.off1 = td_var_offset(file_service_type),
.help = "How to select which file to service next",
.def = "roundrobin",
+ .category = FIO_OPT_G_FILE,
.posval = {
{ .ival = "random",
.oval = FIO_FSERVICE_RANDOM,
.posval = {
{ .ival = "random",
.oval = FIO_FSERVICE_RANDOM,
@@
-1241,6
+1270,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off1 = td_var_offset(fallocate_mode),
.help = "Whether pre-allocation is performed when laying out files",
.def = "posix",
.off1 = td_var_offset(fallocate_mode),
.help = "Whether pre-allocation is performed when laying out files",
.def = "posix",
+ .category = FIO_OPT_G_FILE,
.posval = {
{ .ival = "none",
.oval = FIO_FALLOCATE_NONE,
.posval = {
{ .ival = "none",
.oval = FIO_FALLOCATE_NONE,
@@
-1274,6
+1304,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off1 = td_var_offset(fadvise_hint),
.help = "Use fadvise() to advise the kernel on IO pattern",
.def = "1",
.off1 = td_var_offset(fadvise_hint),
.help = "Use fadvise() to advise the kernel on IO pattern",
.def = "1",
+ .category = FIO_OPT_G_FILE,
},
{
.name = "fsync",
},
{
.name = "fsync",
@@
-1281,6
+1312,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off1 = td_var_offset(fsync_blocks),
.help = "Issue fsync for writes every given number of blocks",
.def = "0",
.off1 = td_var_offset(fsync_blocks),
.help = "Issue fsync for writes every given number of blocks",
.def = "0",
+ .category = FIO_OPT_G_FILE,
},
{
.name = "fdatasync",
},
{
.name = "fdatasync",
@@
-1288,6
+1320,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off1 = td_var_offset(fdatasync_blocks),
.help = "Issue fdatasync for writes every given number of blocks",
.def = "0",
.off1 = td_var_offset(fdatasync_blocks),
.help = "Issue fdatasync for writes every given number of blocks",
.def = "0",
+ .category = FIO_OPT_G_FILE,
},
{
.name = "write_barrier",
},
{
.name = "write_barrier",
@@
-1295,6
+1328,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off1 = td_var_offset(barrier_blocks),
.help = "Make every Nth write a barrier write",
.def = "0",
.off1 = td_var_offset(barrier_blocks),
.help = "Make every Nth write a barrier write",
.def = "0",
+ .category = FIO_OPT_G_IO,
},
#ifdef FIO_HAVE_SYNC_FILE_RANGE
{
},
#ifdef FIO_HAVE_SYNC_FILE_RANGE
{
@@
-1321,6
+1355,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.cb = str_sfr_cb,
.off1 = td_var_offset(sync_file_range),
.help = "Use sync_file_range()",
.cb = str_sfr_cb,
.off1 = td_var_offset(sync_file_range),
.help = "Use sync_file_range()",
+ .category = FIO_OPT_G_FILE,
},
#endif
{
},
#endif
{
@@
-1329,6
+1364,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off1 = td_var_offset(odirect),
.help = "Use O_DIRECT IO (negates buffered)",
.def = "0",
.off1 = td_var_offset(odirect),
.help = "Use O_DIRECT IO (negates buffered)",
.def = "0",
+ .category = FIO_OPT_G_IO,
},
{
.name = "buffered",
},
{
.name = "buffered",
@@
-1337,6
+1373,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.neg = 1,
.help = "Use buffered IO (negates direct)",
.def = "1",
.neg = 1,
.help = "Use buffered IO (negates direct)",
.def = "1",
+ .category = FIO_OPT_G_IO,
},
{
.name = "overwrite",
},
{
.name = "overwrite",
@@
-1344,6
+1381,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off1 = td_var_offset(overwrite),
.help = "When writing, set whether to overwrite current data",
.def = "0",
.off1 = td_var_offset(overwrite),
.help = "When writing, set whether to overwrite current data",
.def = "0",
+ .category = FIO_OPT_G_IO | FIO_OPT_G_FILE,
},
{
.name = "loops",
},
{
.name = "loops",
@@
-1351,6
+1389,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off1 = td_var_offset(loops),
.help = "Number of times to run the job",
.def = "1",
.off1 = td_var_offset(loops),
.help = "Number of times to run the job",
.def = "1",
+ .category = FIO_OPT_G_MISC,
},
{
.name = "numjobs",
},
{
.name = "numjobs",
@@
-1358,6
+1397,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off1 = td_var_offset(numjobs),
.help = "Duplicate this job this many times",
.def = "1",
.off1 = td_var_offset(numjobs),
.help = "Duplicate this job this many times",
.def = "1",
+ .category = FIO_OPT_G_MISC,
},
{
.name = "startdelay",
},
{
.name = "startdelay",
@@
-1365,6
+1405,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off1 = td_var_offset(start_delay),
.help = "Only start job when this period has passed",
.def = "0",
.off1 = td_var_offset(start_delay),
.help = "Only start job when this period has passed",
.def = "0",
+ .category = FIO_OPT_G_MISC,
},
{
.name = "runtime",
},
{
.name = "runtime",
@@
-1373,18
+1414,21
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off1 = td_var_offset(timeout),
.help = "Stop workload when this amount of time has passed",
.def = "0",
.off1 = td_var_offset(timeout),
.help = "Stop workload when this amount of time has passed",
.def = "0",
+ .category = FIO_OPT_G_MISC,
},
{
.name = "time_based",
.type = FIO_OPT_STR_SET,
.off1 = td_var_offset(time_based),
.help = "Keep running until runtime/timeout is met",
},
{
.name = "time_based",
.type = FIO_OPT_STR_SET,
.off1 = td_var_offset(time_based),
.help = "Keep running until runtime/timeout is met",
+ .category = FIO_OPT_G_MISC,
},
{
.name = "ramp_time",
.type = FIO_OPT_STR_VAL_TIME,
.off1 = td_var_offset(ramp_time),
.help = "Ramp up time before measuring performance",
},
{
.name = "ramp_time",
.type = FIO_OPT_STR_VAL_TIME,
.off1 = td_var_offset(ramp_time),
.help = "Ramp up time before measuring performance",
+ .category = FIO_OPT_G_MISC,
},
{
.name = "clocksource",
},
{
.name = "clocksource",
@@
-1392,6
+1436,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.cb = fio_clock_source_cb,
.off1 = td_var_offset(clocksource),
.help = "What type of timing source to use",
.cb = fio_clock_source_cb,
.off1 = td_var_offset(clocksource),
.help = "What type of timing source to use",
+ .category = FIO_OPT_G_OS,
.posval = {
{ .ival = "gettimeofday",
.oval = CS_GTOD,
.posval = {
{ .ival = "gettimeofday",
.oval = CS_GTOD,
@@
-1417,6
+1462,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off1 = td_var_offset(mem_type),
.help = "Backing type for IO buffers",
.def = "malloc",
.off1 = td_var_offset(mem_type),
.help = "Backing type for IO buffers",
.def = "malloc",
+ .category = FIO_OPT_G_IO_BUF | FIO_OPT_G_MEM,
.posval = {
{ .ival = "malloc",
.oval = MEM_MALLOC,
.posval = {
{ .ival = "malloc",
.oval = MEM_MALLOC,
@@
-1453,6
+1499,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.help = "IO memory buffer offset alignment",
.def = "0",
.parent = "iomem",
.help = "IO memory buffer offset alignment",
.def = "0",
.parent = "iomem",
+ .category = FIO_OPT_G_IO_BUF | FIO_OPT_G_MEM,
},
{
.name = "verify",
},
{
.name = "verify",
@@
-1461,6
+1508,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.help = "Verify data written",
.cb = str_verify_cb,
.def = "0",
.help = "Verify data written",
.cb = str_verify_cb,
.def = "0",
+ .category = FIO_OPT_G_IO | FIO_OPT_G_VERIFY,
.posval = {
{ .ival = "0",
.oval = VERIFY_NONE,
.posval = {
{ .ival = "0",
.oval = VERIFY_NONE,
@@
-1524,6
+1572,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.help = "Run verification stage after write",
.def = "1",
.parent = "verify",
.help = "Run verification stage after write",
.def = "1",
.parent = "verify",
+ .category = FIO_OPT_G_IO | FIO_OPT_G_VERIFY,
},
{
.name = "verifysort",
},
{
.name = "verifysort",
@@
-1532,6
+1581,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.help = "Sort written verify blocks for read back",
.def = "1",
.parent = "verify",
.help = "Sort written verify blocks for read back",
.def = "1",
.parent = "verify",
+ .category = FIO_OPT_G_IO | FIO_OPT_G_VERIFY,
},
{
.name = "verify_interval",
},
{
.name = "verify_interval",
@@
-1540,6
+1590,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.minval = 2 * sizeof(struct verify_header),
.help = "Store verify buffer header every N bytes",
.parent = "verify",
.minval = 2 * sizeof(struct verify_header),
.help = "Store verify buffer header every N bytes",
.parent = "verify",
+ .category = FIO_OPT_G_IO | FIO_OPT_G_VERIFY,
},
{
.name = "verify_offset",
},
{
.name = "verify_offset",
@@
-1548,6
+1599,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.def = "0",
.cb = str_verify_offset_cb,
.parent = "verify",
.def = "0",
.cb = str_verify_offset_cb,
.parent = "verify",
+ .category = FIO_OPT_G_IO | FIO_OPT_G_VERIFY,
},
{
.name = "verify_pattern",
},
{
.name = "verify_pattern",
@@
-1555,6
+1607,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.cb = str_verify_pattern_cb,
.help = "Fill pattern for IO buffers",
.parent = "verify",
.cb = str_verify_pattern_cb,
.help = "Fill pattern for IO buffers",
.parent = "verify",
+ .category = FIO_OPT_G_IO | FIO_OPT_G_VERIFY,
},
{
.name = "verify_fatal",
},
{
.name = "verify_fatal",
@@
-1563,6
+1616,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.def = "0",
.help = "Exit on a single verify failure, don't continue",
.parent = "verify",
.def = "0",
.help = "Exit on a single verify failure, don't continue",
.parent = "verify",
+ .category = FIO_OPT_G_IO | FIO_OPT_G_VERIFY | FIO_OPT_G_ERR,
},
{
.name = "verify_dump",
},
{
.name = "verify_dump",
@@
-1571,6
+1625,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.def = "0",
.help = "Dump contents of good and bad blocks on failure",
.parent = "verify",
.def = "0",
.help = "Dump contents of good and bad blocks on failure",
.parent = "verify",
+ .category = FIO_OPT_G_IO | FIO_OPT_G_VERIFY | FIO_OPT_G_ERR,
},
{
.name = "verify_async",
},
{
.name = "verify_async",
@@
-1579,6
+1634,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.def = "0",
.help = "Number of async verifier threads to use",
.parent = "verify",
.def = "0",
.help = "Number of async verifier threads to use",
.parent = "verify",
+ .category = FIO_OPT_G_IO | FIO_OPT_G_VERIFY,
},
{
.name = "verify_backlog",
},
{
.name = "verify_backlog",
@@
-1586,6
+1642,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off1 = td_var_offset(verify_backlog),
.help = "Verify after this number of blocks are written",
.parent = "verify",
.off1 = td_var_offset(verify_backlog),
.help = "Verify after this number of blocks are written",
.parent = "verify",
+ .category = FIO_OPT_G_IO | FIO_OPT_G_VERIFY,
},
{
.name = "verify_backlog_batch",
},
{
.name = "verify_backlog_batch",
@@
-1593,6
+1650,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off1 = td_var_offset(verify_batch),
.help = "Verify this number of IO blocks",
.parent = "verify",
.off1 = td_var_offset(verify_batch),
.help = "Verify this number of IO blocks",
.parent = "verify",
+ .category = FIO_OPT_G_IO | FIO_OPT_G_VERIFY,
},
#ifdef FIO_HAVE_CPU_AFFINITY
{
},
#ifdef FIO_HAVE_CPU_AFFINITY
{
@@
-1601,6
+1659,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.cb = str_verify_cpus_allowed_cb,
.help = "Set CPUs allowed for async verify threads",
.parent = "verify_async",
.cb = str_verify_cpus_allowed_cb,
.help = "Set CPUs allowed for async verify threads",
.parent = "verify_async",
+ .category = FIO_OPT_G_OS | FIO_OPT_G_CPU | FIO_OPT_G_VERIFY,
},
#endif
#ifdef FIO_HAVE_TRIM
},
#endif
#ifdef FIO_HAVE_TRIM
@@
-1612,6
+1671,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.help = "Number of verify blocks to discard/trim",
.parent = "verify",
.def = "0",
.help = "Number of verify blocks to discard/trim",
.parent = "verify",
.def = "0",
+ .category = FIO_OPT_G_IO,
},
{
.name = "trim_verify_zero",
},
{
.name = "trim_verify_zero",
@@
-1620,6
+1680,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off1 = td_var_offset(trim_zero),
.parent = "trim_percentage",
.def = "1",
.off1 = td_var_offset(trim_zero),
.parent = "trim_percentage",
.def = "1",
+ .category = FIO_OPT_G_IO,
},
{
.name = "trim_backlog",
},
{
.name = "trim_backlog",
@@
-1627,6
+1688,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off1 = td_var_offset(trim_backlog),
.help = "Trim after this number of blocks are written",
.parent = "trim_percentage",
.off1 = td_var_offset(trim_backlog),
.help = "Trim after this number of blocks are written",
.parent = "trim_percentage",
+ .category = FIO_OPT_G_IO,
},
{
.name = "trim_backlog_batch",
},
{
.name = "trim_backlog_batch",
@@
-1634,6
+1696,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off1 = td_var_offset(trim_batch),
.help = "Trim this number of IO blocks",
.parent = "trim_percentage",
.off1 = td_var_offset(trim_batch),
.help = "Trim this number of IO blocks",
.parent = "trim_percentage",
+ .category = FIO_OPT_G_IO,
},
#endif
{
},
#endif
{
@@
-1641,12
+1704,14
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.type = FIO_OPT_STR_STORE,
.off1 = td_var_offset(write_iolog_file),
.help = "Store IO pattern to file",
.type = FIO_OPT_STR_STORE,
.off1 = td_var_offset(write_iolog_file),
.help = "Store IO pattern to file",
+ .category = FIO_OPT_G_IO | FIO_OPT_G_LOG,
},
{
.name = "read_iolog",
.type = FIO_OPT_STR_STORE,
.off1 = td_var_offset(read_iolog_file),
.help = "Playback IO pattern from file",
},
{
.name = "read_iolog",
.type = FIO_OPT_STR_STORE,
.off1 = td_var_offset(read_iolog_file),
.help = "Playback IO pattern from file",
+ .category = FIO_OPT_G_IO | FIO_OPT_G_LOG,
},
{
.name = "replay_no_stall",
},
{
.name = "replay_no_stall",
@@
-1655,6
+1720,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.def = "0",
.parent = "read_iolog",
.help = "Playback IO pattern file as fast as possible without stalls",
.def = "0",
.parent = "read_iolog",
.help = "Playback IO pattern file as fast as possible without stalls",
+ .category = FIO_OPT_G_IO | FIO_OPT_G_LOG,
},
{
.name = "replay_redirect",
},
{
.name = "replay_redirect",
@@
-1662,18
+1728,21
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off1 = td_var_offset(replay_redirect),
.parent = "read_iolog",
.help = "Replay all I/O onto this device, regardless of trace device",
.off1 = td_var_offset(replay_redirect),
.parent = "read_iolog",
.help = "Replay all I/O onto this device, regardless of trace device",
+ .category = FIO_OPT_G_IO | FIO_OPT_G_LOG,
},
{
.name = "exec_prerun",
.type = FIO_OPT_STR_STORE,
.off1 = td_var_offset(exec_prerun),
.help = "Execute this file prior to running job",
},
{
.name = "exec_prerun",
.type = FIO_OPT_STR_STORE,
.off1 = td_var_offset(exec_prerun),
.help = "Execute this file prior to running job",
+ .category = FIO_OPT_G_MISC | FIO_OPT_G_OS,
},
{
.name = "exec_postrun",
.type = FIO_OPT_STR_STORE,
.off1 = td_var_offset(exec_postrun),
.help = "Execute this file after running job",
},
{
.name = "exec_postrun",
.type = FIO_OPT_STR_STORE,
.off1 = td_var_offset(exec_postrun),
.help = "Execute this file after running job",
+ .category = FIO_OPT_G_MISC | FIO_OPT_G_OS,
},
#ifdef FIO_HAVE_IOSCHED_SWITCH
{
},
#ifdef FIO_HAVE_IOSCHED_SWITCH
{
@@
-1681,6
+1750,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.type = FIO_OPT_STR_STORE,
.off1 = td_var_offset(ioscheduler),
.help = "Use this IO scheduler on the backing device",
.type = FIO_OPT_STR_STORE,
.off1 = td_var_offset(ioscheduler),
.help = "Use this IO scheduler on the backing device",
+ .category = FIO_OPT_G_OS | FIO_OPT_G_IO,
},
#endif
{
},
#endif
{
@@
-1689,6
+1759,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off1 = td_var_offset(zone_size),
.help = "Amount of data to read per zone",
.def = "0",
.off1 = td_var_offset(zone_size),
.help = "Amount of data to read per zone",
.def = "0",
+ .category = FIO_OPT_G_IO | FIO_OPT_G_ZONE,
},
{
.name = "zonerange",
},
{
.name = "zonerange",
@@
-1696,6
+1767,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off1 = td_var_offset(zone_range),
.help = "Give size of an IO zone",
.def = "0",
.off1 = td_var_offset(zone_range),
.help = "Give size of an IO zone",
.def = "0",
+ .category = FIO_OPT_G_IO | FIO_OPT_G_ZONE,
},
{
.name = "zoneskip",
},
{
.name = "zoneskip",
@@
-1703,6
+1775,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off1 = td_var_offset(zone_skip),
.help = "Space between IO zones",
.def = "0",
.off1 = td_var_offset(zone_skip),
.help = "Space between IO zones",
.def = "0",
+ .category = FIO_OPT_G_IO | FIO_OPT_G_ZONE,
},
{
.name = "lockmem",
},
{
.name = "lockmem",
@@
-1710,6
+1783,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.cb = str_lockmem_cb,
.help = "Lock down this amount of memory",
.def = "0",
.cb = str_lockmem_cb,
.help = "Lock down this amount of memory",
.def = "0",
+ .category = FIO_OPT_G_OS | FIO_OPT_G_MEM,
},
{
.name = "rwmixread",
},
{
.name = "rwmixread",
@@
-1718,6
+1792,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.maxval = 100,
.help = "Percentage of mixed workload that is reads",
.def = "50",
.maxval = 100,
.help = "Percentage of mixed workload that is reads",
.def = "50",
+ .category = FIO_OPT_G_IO,
},
{
.name = "rwmixwrite",
},
{
.name = "rwmixwrite",
@@
-1726,10
+1801,12
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.maxval = 100,
.help = "Percentage of mixed workload that is writes",
.def = "50",
.maxval = 100,
.help = "Percentage of mixed workload that is writes",
.def = "50",
+ .category = FIO_OPT_G_IO,
},
{
.name = "rwmixcycle",
.type = FIO_OPT_DEPRECATED,
},
{
.name = "rwmixcycle",
.type = FIO_OPT_DEPRECATED,
+ .category = FIO_OPT_G_IO,
},
{
.name = "nice",
},
{
.name = "nice",
@@
-1739,6
+1816,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.minval = -19,
.maxval = 20,
.def = "0",
.minval = -19,
.maxval = 20,
.def = "0",
+ .category = FIO_OPT_G_OS | FIO_OPT_G_CPU,
},
#ifdef FIO_HAVE_IOPRIO
{
},
#ifdef FIO_HAVE_IOPRIO
{
@@
-1748,6
+1826,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.help = "Set job IO priority value",
.minval = 0,
.maxval = 7,
.help = "Set job IO priority value",
.minval = 0,
.maxval = 7,
+ .category = FIO_OPT_G_OS | FIO_OPT_G_CPU,
},
{
.name = "prioclass",
},
{
.name = "prioclass",
@@
-1756,6
+1835,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.help = "Set job IO priority class",
.minval = 0,
.maxval = 3,
.help = "Set job IO priority class",
.minval = 0,
.maxval = 3,
+ .category = FIO_OPT_G_OS | FIO_OPT_G_CPU,
},
#endif
{
},
#endif
{
@@
-1764,6
+1844,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off1 = td_var_offset(thinktime),
.help = "Idle time between IO buffers (usec)",
.def = "0",
.off1 = td_var_offset(thinktime),
.help = "Idle time between IO buffers (usec)",
.def = "0",
+ .category = FIO_OPT_G_MISC,
},
{
.name = "thinktime_spin",
},
{
.name = "thinktime_spin",
@@
-1772,6
+1853,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.help = "Start think time by spinning this amount (usec)",
.def = "0",
.parent = "thinktime",
.help = "Start think time by spinning this amount (usec)",
.def = "0",
.parent = "thinktime",
+ .category = FIO_OPT_G_MISC,
},
{
.name = "thinktime_blocks",
},
{
.name = "thinktime_blocks",
@@
-1780,6
+1862,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.help = "IO buffer period between 'thinktime'",
.def = "1",
.parent = "thinktime",
.help = "IO buffer period between 'thinktime'",
.def = "1",
.parent = "thinktime",
+ .category = FIO_OPT_G_MISC,
},
{
.name = "rate",
},
{
.name = "rate",
@@
-1787,6
+1870,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off1 = td_var_offset(rate[0]),
.off2 = td_var_offset(rate[1]),
.help = "Set bandwidth rate",
.off1 = td_var_offset(rate[0]),
.off2 = td_var_offset(rate[1]),
.help = "Set bandwidth rate",
+ .category = FIO_OPT_G_IO,
},
{
.name = "ratemin",
},
{
.name = "ratemin",
@@
-1795,6
+1879,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off2 = td_var_offset(ratemin[1]),
.help = "Job must meet this rate or it will be shutdown",
.parent = "rate",
.off2 = td_var_offset(ratemin[1]),
.help = "Job must meet this rate or it will be shutdown",
.parent = "rate",
+ .category = FIO_OPT_G_IO,
},
{
.name = "rate_iops",
},
{
.name = "rate_iops",
@@
-1802,6
+1887,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off1 = td_var_offset(rate_iops[0]),
.off2 = td_var_offset(rate_iops[1]),
.help = "Limit IO used to this number of IO operations/sec",
.off1 = td_var_offset(rate_iops[0]),
.off2 = td_var_offset(rate_iops[1]),
.help = "Limit IO used to this number of IO operations/sec",
+ .category = FIO_OPT_G_IO,
},
{
.name = "rate_iops_min",
},
{
.name = "rate_iops_min",
@@
-1810,6
+1896,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off2 = td_var_offset(rate_iops_min[1]),
.help = "Job must meet this rate or it will be shut down",
.parent = "rate_iops",
.off2 = td_var_offset(rate_iops_min[1]),
.help = "Job must meet this rate or it will be shut down",
.parent = "rate_iops",
+ .category = FIO_OPT_G_IO,
},
{
.name = "ratecycle",
},
{
.name = "ratecycle",
@@
-1818,6
+1905,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.help = "Window average for rate limits (msec)",
.def = "1000",
.parent = "rate",
.help = "Window average for rate limits (msec)",
.def = "1000",
.parent = "rate",
+ .category = FIO_OPT_G_IO,
},
{
.name = "invalidate",
},
{
.name = "invalidate",
@@
-1825,6
+1913,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off1 = td_var_offset(invalidate_cache),
.help = "Invalidate buffer/page cache prior to running job",
.def = "1",
.off1 = td_var_offset(invalidate_cache),
.help = "Invalidate buffer/page cache prior to running job",
.def = "1",
+ .category = FIO_OPT_G_IO | FIO_OPT_G_CACHE,
},
{
.name = "sync",
},
{
.name = "sync",
@@
-1833,6
+1922,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.help = "Use O_SYNC for buffered writes",
.def = "0",
.parent = "buffered",
.help = "Use O_SYNC for buffered writes",
.def = "0",
.parent = "buffered",
+ .category = FIO_OPT_G_IO | FIO_OPT_G_FILE,
},
{
.name = "bwavgtime",
},
{
.name = "bwavgtime",
@@
-1842,6
+1932,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
" (msec)",
.def = "500",
.parent = "write_bw_log",
" (msec)",
.def = "500",
.parent = "write_bw_log",
+ .category = FIO_OPT_G_LOG | FIO_OPT_G_STAT,
},
{
.name = "iopsavgtime",
},
{
.name = "iopsavgtime",
@@
-1850,6
+1941,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.help = "Time window over which to calculate IOPS (msec)",
.def = "500",
.parent = "write_iops_log",
.help = "Time window over which to calculate IOPS (msec)",
.def = "500",
.parent = "write_iops_log",
+ .category = FIO_OPT_G_LOG | FIO_OPT_G_STAT,
},
{
.name = "create_serialize",
},
{
.name = "create_serialize",
@@
-1857,6
+1949,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off1 = td_var_offset(create_serialize),
.help = "Serialize creating of job files",
.def = "1",
.off1 = td_var_offset(create_serialize),
.help = "Serialize creating of job files",
.def = "1",
+ .category = FIO_OPT_G_FILE,
},
{
.name = "create_fsync",
},
{
.name = "create_fsync",
@@
-1864,6
+1957,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off1 = td_var_offset(create_fsync),
.help = "fsync file after creation",
.def = "1",
.off1 = td_var_offset(create_fsync),
.help = "fsync file after creation",
.def = "1",
+ .category = FIO_OPT_G_FILE,
},
{
.name = "create_on_open",
},
{
.name = "create_on_open",
@@
-1871,6
+1965,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off1 = td_var_offset(create_on_open),
.help = "Create files when they are opened for IO",
.def = "0",
.off1 = td_var_offset(create_on_open),
.help = "Create files when they are opened for IO",
.def = "0",
+ .category = FIO_OPT_G_FILE,
},
{
.name = "pre_read",
},
{
.name = "pre_read",
@@
-1878,12
+1973,14
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off1 = td_var_offset(pre_read),
.help = "Pre-read files before starting official testing",
.def = "0",
.off1 = td_var_offset(pre_read),
.help = "Pre-read files before starting official testing",
.def = "0",
+ .category = FIO_OPT_G_FILE | FIO_OPT_G_CACHE,
},
{
.name = "cpuload",
.type = FIO_OPT_INT,
.off1 = td_var_offset(cpuload),
.help = "Use this percentage of CPU",
},
{
.name = "cpuload",
.type = FIO_OPT_INT,
.off1 = td_var_offset(cpuload),
.help = "Use this percentage of CPU",
+ .category = FIO_OPT_G_CPU,
},
{
.name = "cpuchunks",
},
{
.name = "cpuchunks",
@@
-1892,6
+1989,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.help = "Length of the CPU burn cycles (usecs)",
.def = "50000",
.parent = "cpuload",
.help = "Length of the CPU burn cycles (usecs)",
.def = "50000",
.parent = "cpuload",
+ .category = FIO_OPT_G_CPU,
},
#ifdef FIO_HAVE_CPU_AFFINITY
{
},
#ifdef FIO_HAVE_CPU_AFFINITY
{
@@
-1899,12
+1997,14
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.type = FIO_OPT_INT,
.cb = str_cpumask_cb,
.help = "CPU affinity mask",
.type = FIO_OPT_INT,
.cb = str_cpumask_cb,
.help = "CPU affinity mask",
+ .category = FIO_OPT_G_CPU | FIO_OPT_G_OS,
},
{
.name = "cpus_allowed",
.type = FIO_OPT_STR,
.cb = str_cpus_allowed_cb,
.help = "Set CPUs allowed",
},
{
.name = "cpus_allowed",
.type = FIO_OPT_STR,
.cb = str_cpus_allowed_cb,
.help = "Set CPUs allowed",
+ .category = FIO_OPT_G_CPU | FIO_OPT_G_OS,
},
#endif
{
},
#endif
{
@@
-1913,6
+2013,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off1 = td_var_offset(end_fsync),
.help = "Include fsync at the end of job",
.def = "0",
.off1 = td_var_offset(end_fsync),
.help = "Include fsync at the end of job",
.def = "0",
+ .category = FIO_OPT_G_FILE,
},
{
.name = "fsync_on_close",
},
{
.name = "fsync_on_close",
@@
-1920,6
+2021,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off1 = td_var_offset(fsync_on_close),
.help = "fsync files on close",
.def = "0",
.off1 = td_var_offset(fsync_on_close),
.help = "fsync files on close",
.def = "0",
+ .category = FIO_OPT_G_FILE,
},
{
.name = "unlink",
},
{
.name = "unlink",
@@
-1927,12
+2029,14
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off1 = td_var_offset(unlink),
.help = "Unlink created files after job has completed",
.def = "0",
.off1 = td_var_offset(unlink),
.help = "Unlink created files after job has completed",
.def = "0",
+ .category = FIO_OPT_G_FILE,
},
{
.name = "exitall",
.type = FIO_OPT_STR_SET,
.cb = str_exitall_cb,
.help = "Terminate all jobs when one exits",
},
{
.name = "exitall",
.type = FIO_OPT_STR_SET,
.cb = str_exitall_cb,
.help = "Terminate all jobs when one exits",
+ .category = FIO_OPT_G_MISC | FIO_OPT_G_JOB,
},
{
.name = "stonewall",
},
{
.name = "stonewall",
@@
-1940,18
+2044,21
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.type = FIO_OPT_STR_SET,
.off1 = td_var_offset(stonewall),
.help = "Insert a hard barrier between this job and previous",
.type = FIO_OPT_STR_SET,
.off1 = td_var_offset(stonewall),
.help = "Insert a hard barrier between this job and previous",
+ .category = FIO_OPT_G_MISC | FIO_OPT_G_JOB,
},
{
.name = "new_group",
.type = FIO_OPT_STR_SET,
.off1 = td_var_offset(new_group),
.help = "Mark the start of a new group (for reporting)",
},
{
.name = "new_group",
.type = FIO_OPT_STR_SET,
.off1 = td_var_offset(new_group),
.help = "Mark the start of a new group (for reporting)",
+ .category = FIO_OPT_G_MISC | FIO_OPT_G_JOB,
},
{
.name = "thread",
.type = FIO_OPT_STR_SET,
.off1 = td_var_offset(use_thread),
.help = "Use threads instead of forks",
},
{
.name = "thread",
.type = FIO_OPT_STR_SET,
.off1 = td_var_offset(use_thread),
.help = "Use threads instead of forks",
+ .category = FIO_OPT_G_MISC | FIO_OPT_G_OS | FIO_OPT_G_JOB,
},
{
.name = "write_bw_log",
},
{
.name = "write_bw_log",
@@
-1959,6
+2066,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off1 = td_var_offset(write_bw_log),
.cb = str_write_bw_log_cb,
.help = "Write log of bandwidth during run",
.off1 = td_var_offset(write_bw_log),
.cb = str_write_bw_log_cb,
.help = "Write log of bandwidth during run",
+ .category = FIO_OPT_G_LOG,
},
{
.name = "write_lat_log",
},
{
.name = "write_lat_log",
@@
-1966,6
+2074,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off1 = td_var_offset(write_lat_log),
.cb = str_write_lat_log_cb,
.help = "Write log of latency during run",
.off1 = td_var_offset(write_lat_log),
.cb = str_write_lat_log_cb,
.help = "Write log of latency during run",
+ .category = FIO_OPT_G_LOG,
},
{
.name = "write_iops_log",
},
{
.name = "write_iops_log",
@@
-1973,6
+2082,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off1 = td_var_offset(write_iops_log),
.cb = str_write_iops_log_cb,
.help = "Write log of IOPS during run",
.off1 = td_var_offset(write_iops_log),
.cb = str_write_iops_log_cb,
.help = "Write log of IOPS during run",
+ .category = FIO_OPT_G_LOG,
},
{
.name = "log_avg_msec",
},
{
.name = "log_avg_msec",
@@
-1980,6
+2090,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off1 = td_var_offset(log_avg_msec),
.help = "Average bw/iops/lat logs over this period of time",
.def = "0",
.off1 = td_var_offset(log_avg_msec),
.help = "Average bw/iops/lat logs over this period of time",
.def = "0",
+ .category = FIO_OPT_G_LOG,
},
{
.name = "hugepage-size",
},
{
.name = "hugepage-size",
@@
-1987,24
+2098,28
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off1 = td_var_offset(hugepage_size),
.help = "When using hugepages, specify size of each page",
.def = __fio_stringify(FIO_HUGE_PAGE),
.off1 = td_var_offset(hugepage_size),
.help = "When using hugepages, specify size of each page",
.def = __fio_stringify(FIO_HUGE_PAGE),
+ .category = FIO_OPT_G_OS | FIO_OPT_G_MEM,
},
{
.name = "group_reporting",
.type = FIO_OPT_STR_SET,
.off1 = td_var_offset(group_reporting),
.help = "Do reporting on a per-group basis",
},
{
.name = "group_reporting",
.type = FIO_OPT_STR_SET,
.off1 = td_var_offset(group_reporting),
.help = "Do reporting on a per-group basis",
+ .category = FIO_OPT_G_MISC,
},
{
.name = "zero_buffers",
.type = FIO_OPT_STR_SET,
.off1 = td_var_offset(zero_buffers),
.help = "Init IO buffers to all zeroes",
},
{
.name = "zero_buffers",
.type = FIO_OPT_STR_SET,
.off1 = td_var_offset(zero_buffers),
.help = "Init IO buffers to all zeroes",
+ .category = FIO_OPT_G_IO_BUF,
},
{
.name = "refill_buffers",
.type = FIO_OPT_STR_SET,
.off1 = td_var_offset(refill_buffers),
.help = "Refill IO buffers on every IO submit",
},
{
.name = "refill_buffers",
.type = FIO_OPT_STR_SET,
.off1 = td_var_offset(refill_buffers),
.help = "Refill IO buffers on every IO submit",
+ .category = FIO_OPT_G_IO_BUF,
},
{
.name = "scramble_buffers",
},
{
.name = "scramble_buffers",
@@
-2012,6
+2127,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off1 = td_var_offset(scramble_buffers),
.help = "Slightly scramble buffers on every IO submit",
.def = "1",
.off1 = td_var_offset(scramble_buffers),
.help = "Slightly scramble buffers on every IO submit",
.def = "1",
+ .category = FIO_OPT_G_IO_BUF,
},
{
.name = "buffer_compress_percentage",
},
{
.name = "buffer_compress_percentage",
@@
-2021,12
+2137,20
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.minval = 1,
.help = "How compressible the buffer is (approximately)",
},
.minval = 1,
.help = "How compressible the buffer is (approximately)",
},
+ {
+ .name = "buffer_compress_chunk",
+ .type = FIO_OPT_INT,
+ .off1 = td_var_offset(compress_chunk),
+ .parent = "buffer_compress_percentage",
+ .help = "Size of compressible region in buffer",
+ },
{
.name = "clat_percentiles",
.type = FIO_OPT_BOOL,
.off1 = td_var_offset(clat_percentiles),
.help = "Enable the reporting of completion latency percentiles",
.def = "1",
{
.name = "clat_percentiles",
.type = FIO_OPT_BOOL,
.off1 = td_var_offset(clat_percentiles),
.help = "Enable the reporting of completion latency percentiles",
.def = "1",
+ .category = FIO_OPT_G_STAT,
},
{
.name = "percentile_list",
},
{
.name = "percentile_list",
@@
-2037,6
+2161,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.maxlen = FIO_IO_U_LIST_MAX_LEN,
.minfp = 0.0,
.maxfp = 100.0,
.maxlen = FIO_IO_U_LIST_MAX_LEN,
.minfp = 0.0,
.maxfp = 100.0,
+ .category = FIO_OPT_G_STAT,
},
#ifdef FIO_HAVE_DISK_UTIL
},
#ifdef FIO_HAVE_DISK_UTIL
@@
-2046,6
+2171,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off1 = td_var_offset(do_disk_util),
.help = "Log disk utilization statistics",
.def = "1",
.off1 = td_var_offset(do_disk_util),
.help = "Log disk utilization statistics",
.def = "1",
+ .category = FIO_OPT_G_OS | FIO_OPT_G_STAT,
},
#endif
{
},
#endif
{
@@
-2054,6
+2180,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.help = "Greatly reduce number of gettimeofday() calls",
.cb = str_gtod_reduce_cb,
.def = "0",
.help = "Greatly reduce number of gettimeofday() calls",
.cb = str_gtod_reduce_cb,
.def = "0",
+ .category = FIO_OPT_G_OS | FIO_OPT_G_MISC | FIO_OPT_G_STAT,
},
{
.name = "disable_lat",
},
{
.name = "disable_lat",
@@
-2062,6
+2189,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.help = "Disable latency numbers",
.parent = "gtod_reduce",
.def = "0",
.help = "Disable latency numbers",
.parent = "gtod_reduce",
.def = "0",
+ .category = FIO_OPT_G_OS | FIO_OPT_G_MISC | FIO_OPT_G_STAT,
},
{
.name = "disable_clat",
},
{
.name = "disable_clat",
@@
-2070,6
+2198,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.help = "Disable completion latency numbers",
.parent = "gtod_reduce",
.def = "0",
.help = "Disable completion latency numbers",
.parent = "gtod_reduce",
.def = "0",
+ .category = FIO_OPT_G_OS | FIO_OPT_G_MISC | FIO_OPT_G_STAT,
},
{
.name = "disable_slat",
},
{
.name = "disable_slat",
@@
-2078,6
+2207,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.help = "Disable submission latency numbers",
.parent = "gtod_reduce",
.def = "0",
.help = "Disable submission latency numbers",
.parent = "gtod_reduce",
.def = "0",
+ .category = FIO_OPT_G_OS | FIO_OPT_G_MISC | FIO_OPT_G_STAT,
},
{
.name = "disable_bw_measurement",
},
{
.name = "disable_bw_measurement",
@@
-2086,6
+2216,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.help = "Disable bandwidth logging",
.parent = "gtod_reduce",
.def = "0",
.help = "Disable bandwidth logging",
.parent = "gtod_reduce",
.def = "0",
+ .category = FIO_OPT_G_OS | FIO_OPT_G_MISC | FIO_OPT_G_STAT,
},
{
.name = "gtod_cpu",
},
{
.name = "gtod_cpu",
@@
-2093,6
+2224,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.cb = str_gtod_cpu_cb,
.help = "Set up dedicated gettimeofday() thread on this CPU",
.verify = gtod_cpu_verify,
.cb = str_gtod_cpu_cb,
.help = "Set up dedicated gettimeofday() thread on this CPU",
.verify = gtod_cpu_verify,
+ .category = FIO_OPT_G_OS | FIO_OPT_G_MISC | FIO_OPT_G_STAT,
},
{
.name = "continue_on_error",
},
{
.name = "continue_on_error",
@@
-2100,6
+2232,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off1 = td_var_offset(continue_on_error),
.help = "Continue on non-fatal errors during IO",
.def = "none",
.off1 = td_var_offset(continue_on_error),
.help = "Continue on non-fatal errors during IO",
.def = "none",
+ .category = FIO_OPT_G_MISC | FIO_OPT_G_ERR,
.posval = {
{ .ival = "none",
.oval = ERROR_TYPE_NONE,
.posval = {
{ .ival = "none",
.oval = ERROR_TYPE_NONE,
@@
-2140,12
+2273,14
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.type = FIO_OPT_STR_STORE,
.off1 = td_var_offset(profile),
.help = "Select a specific builtin performance test",
.type = FIO_OPT_STR_STORE,
.off1 = td_var_offset(profile),
.help = "Select a specific builtin performance test",
+ .category = FIO_OPT_G_MISC | FIO_OPT_G_JOB,
},
{
.name = "cgroup",
.type = FIO_OPT_STR_STORE,
.off1 = td_var_offset(cgroup),
.help = "Add job to cgroup of this name",
},
{
.name = "cgroup",
.type = FIO_OPT_STR_STORE,
.off1 = td_var_offset(cgroup),
.help = "Add job to cgroup of this name",
+ .category = FIO_OPT_G_MISC | FIO_OPT_G_OS,
},
{
.name = "cgroup_weight",
},
{
.name = "cgroup_weight",
@@
-2154,6
+2289,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.help = "Use given weight for cgroup",
.minval = 100,
.maxval = 1000,
.help = "Use given weight for cgroup",
.minval = 100,
.maxval = 1000,
+ .category = FIO_OPT_G_MISC | FIO_OPT_G_OS,
},
{
.name = "cgroup_nodelete",
},
{
.name = "cgroup_nodelete",
@@
-2161,18
+2297,21
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off1 = td_var_offset(cgroup_nodelete),
.help = "Do not delete cgroups after job completion",
.def = "0",
.off1 = td_var_offset(cgroup_nodelete),
.help = "Do not delete cgroups after job completion",
.def = "0",
+ .category = FIO_OPT_G_MISC | FIO_OPT_G_OS,
},
{
.name = "uid",
.type = FIO_OPT_INT,
.off1 = td_var_offset(uid),
.help = "Run job with this user ID",
},
{
.name = "uid",
.type = FIO_OPT_INT,
.off1 = td_var_offset(uid),
.help = "Run job with this user ID",
+ .category = FIO_OPT_G_OS | FIO_OPT_G_JOB,
},
{
.name = "gid",
.type = FIO_OPT_INT,
.off1 = td_var_offset(gid),
.help = "Run job with this group ID",
},
{
.name = "gid",
.type = FIO_OPT_INT,
.off1 = td_var_offset(gid),
.help = "Run job with this group ID",
+ .category = FIO_OPT_G_OS | FIO_OPT_G_JOB,
},
{
.name = "flow_id",
},
{
.name = "flow_id",
@@
-2180,6
+2319,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.off1 = td_var_offset(flow_id),
.help = "The flow index ID to use",
.def = "0",
.off1 = td_var_offset(flow_id),
.help = "The flow index ID to use",
.def = "0",
+ .category = FIO_OPT_G_IO,
},
{
.name = "flow",
},
{
.name = "flow",
@@
-2188,6
+2328,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
.help = "Weight for flow control of this job",
.parent = "flow_id",
.def = "0",
.help = "Weight for flow control of this job",
.parent = "flow_id",
.def = "0",
+ .category = FIO_OPT_G_IO,
},
{
.name = "flow_watermark",
},
{
.name = "flow_watermark",
@@
-2198,6
+2339,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
" with non-zero flow.",
.parent = "flow_id",
.def = "1024",
" with non-zero flow.",
.parent = "flow_id",
.def = "1024",
+ .category = FIO_OPT_G_IO,
},
{
.name = "flow_sleep",
},
{
.name = "flow_sleep",
@@
-2207,6
+2349,7
@@
static struct fio_option options[FIO_MAX_OPTS] = {
" back by the flow control mechanism",
.parent = "flow_id",
.def = "0",
" back by the flow control mechanism",
.parent = "flow_id",
.def = "0",
+ .category = FIO_OPT_G_IO,
},
{
.name = NULL,
},
{
.name = NULL,