X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=init.c;h=c2725261ad8481ee923de2fb5b6e3ac524868e03;hp=11fd3e283f0c2f7026b68cca1e825515085d8b6a;hb=03b74b3ec5268e731ed7fcaef31c8c0655acd530;hpb=15f7918ff432d5da2b2abc84a50c685bde5e72ef diff --git a/init.c b/init.c index 11fd3e28..c2725261 100644 --- a/init.c +++ b/init.c @@ -77,6 +77,119 @@ static struct fio_option options[] = { .posval = { "sync", "libaio", "posixaio", "mmap", "splice", "sg", "null", }, }, + { + .name = "iodepth", + .type = FIO_OPT_INT, + .off1 = td_var_offset(iodepth), + .help = "Amount of IO buffers to keep in flight", + .def = "1", + }, + { + .name = "size", + .type = FIO_OPT_STR_VAL, + .off1 = td_var_offset(total_file_size), + .help = "Size of device or file", + }, + { + .name = "bs", + .type = FIO_OPT_STR_VAL_INT, + .off1 = td_var_offset(bs[DDIR_READ]), + .off2 = td_var_offset(bs[DDIR_WRITE]), + .help = "Block size unit", + .def = "4k", + }, + { + .name = "bsrange", + .type = FIO_OPT_RANGE, + .off1 = td_var_offset(min_bs[DDIR_READ]), + .off2 = td_var_offset(max_bs[DDIR_READ]), + .off3 = td_var_offset(min_bs[DDIR_WRITE]), + .off4 = td_var_offset(max_bs[DDIR_WRITE]), + .help = "Set block size range (in more detail than bs)", + }, + { + .name = "bs_unaligned", + .type = FIO_OPT_STR_SET, + .off1 = td_var_offset(bs_unaligned), + .help = "Don't sector align IO buffer sizes", + }, + { + .name = "offset", + .type = FIO_OPT_STR_VAL, + .off1 = td_var_offset(start_offset), + .help = "Start IO from this offset", + .def = "0", + }, + { + .name = "randrepeat", + .type = FIO_OPT_BOOL, + .off1 = td_var_offset(rand_repeatable), + .help = "Use repeatable random IO pattern", + .def = "1", + }, + { + .name = "norandommap", + .type = FIO_OPT_STR_SET, + .off1 = td_var_offset(norandommap), + .help = "Accept potential duplicate random blocks", + }, + { + .name = "nrfiles", + .type = FIO_OPT_INT, + .off1 = td_var_offset(nr_files), + .help = "Split job workload between this number of files", + .def = "1", + }, + { + .name = "fsync", + .type = FIO_OPT_INT, + .off1 = td_var_offset(fsync_blocks), + .help = "Issue fsync for writes every given number of blocks", + .def = "0", + }, + { + .name = "direct", + .type = FIO_OPT_BOOL, + .off1 = td_var_offset(odirect), + .help = "Use O_DIRECT IO", + .def = "1", + }, + { + .name = "overwrite", + .type = FIO_OPT_BOOL, + .off1 = td_var_offset(overwrite), + .help = "When writing, set whether to overwrite current data", + .def = "0", + }, + { + .name = "loops", + .type = FIO_OPT_INT, + .off1 = td_var_offset(loops), + .help = "Number of times to run the job", + .def = "1", + }, + { + .name = "numjobs", + .type = FIO_OPT_INT, + .off1 = td_var_offset(numjobs), + .help = "Duplicate this job this many times", + .def = "1", + }, + { + .name = "startdelay", + .type = FIO_OPT_INT, + .off1 = td_var_offset(start_delay), + .help = "Only start job when this period has passed", + .def = "0", + }, + { + .name = "runtime", + .alias = "timeout", + .type = FIO_OPT_STR_VAL_TIME, + .off1 = td_var_offset(timeout), + .help = "Stop workload when this amount of time has passed", + .def = "0", + }, { .name = "mem", .type = FIO_OPT_STR, @@ -125,27 +238,6 @@ static struct fio_option options[] = { .help = "Use this IO scheduler on the backing device", }, #endif - { - .name = "size", - .type = FIO_OPT_STR_VAL, - .off1 = td_var_offset(total_file_size), - .help = "Size of device or file", - }, - { - .name = "bs", - .type = FIO_OPT_STR_VAL_INT, - .off1 = td_var_offset(bs[DDIR_READ]), - .off2 = td_var_offset(bs[DDIR_WRITE]), - .help = "Block size unit", - .def = "4k", - }, - { - .name = "offset", - .type = FIO_OPT_STR_VAL, - .off1 = td_var_offset(start_offset), - .help = "Start IO from this offset", - .def = "0", - }, { .name = "zonesize", .type = FIO_OPT_STR_VAL, @@ -167,43 +259,6 @@ static struct fio_option options[] = { .help = "Lock down this amount of memory", .def = "0", }, - { - .name = "bsrange", - .type = FIO_OPT_RANGE, - .off1 = td_var_offset(min_bs[DDIR_READ]), - .off2 = td_var_offset(max_bs[DDIR_READ]), - .off3 = td_var_offset(min_bs[DDIR_WRITE]), - .off4 = td_var_offset(max_bs[DDIR_WRITE]), - .help = "Set block size range", - }, - { - .name = "randrepeat", - .type = FIO_OPT_INT, - .off1 = td_var_offset(rand_repeatable), - .help = "Use repeatable random IO pattern", - .def = "1", - }, - { - .name = "nrfiles", - .type = FIO_OPT_INT, - .off1 = td_var_offset(nr_files), - .help = "Split job workload between this number of files", - .def = "1", - }, - { - .name = "iodepth", - .type = FIO_OPT_INT, - .off1 = td_var_offset(iodepth), - .help = "Amount of IO buffers to keep in flight", - .def = "1", - }, - { - .name = "fsync", - .type = FIO_OPT_INT, - .off1 = td_var_offset(fsync_blocks), - .help = "Issue fsync for writes every given number of blocks", - .def = "0", - }, { .name = "rwmixcycle", .type = FIO_OPT_INT, @@ -287,30 +342,16 @@ static struct fio_option options[] = { .help = "Window average for rate limits (msec)", .def = "1000", }, - { - .name = "startdelay", - .type = FIO_OPT_INT, - .off1 = td_var_offset(start_delay), - .help = "Only start job when this period has passed", - .def = "0", - }, - { - .name = "timeout", - .type = FIO_OPT_STR_VAL_TIME, - .off1 = td_var_offset(timeout), - .help = "Stop workload when this amount of time has passed", - .def = "0", - }, { .name = "invalidate", - .type = FIO_OPT_INT, + .type = FIO_OPT_BOOL, .off1 = td_var_offset(invalidate_cache), .help = "Invalidate buffer/page cache prior to running job", .def = "1", }, { .name = "sync", - .type = FIO_OPT_INT, + .type = FIO_OPT_BOOL, .off1 = td_var_offset(sync_io), .help = "Use O_SYNC for buffered writes", .def = "0", @@ -324,32 +365,18 @@ static struct fio_option options[] = { }, { .name = "create_serialize", - .type = FIO_OPT_INT, + .type = FIO_OPT_BOOL, .off1 = td_var_offset(create_serialize), .help = "Serialize creating of job files", .def = "1", }, { .name = "create_fsync", - .type = FIO_OPT_INT, + .type = FIO_OPT_BOOL, .off1 = td_var_offset(create_fsync), .help = "Fsync file after creation", .def = "1", }, - { - .name = "loops", - .type = FIO_OPT_INT, - .off1 = td_var_offset(loops), - .help = "Number of times to run the job", - .def = "1", - }, - { - .name = "numjobs", - .type = FIO_OPT_INT, - .off1 = td_var_offset(numjobs), - .help = "Duplicate this job this many times", - .def = "1", - }, { .name = "cpuload", .type = FIO_OPT_INT, @@ -362,20 +389,6 @@ static struct fio_option options[] = { .off1 = td_var_offset(cpucycle), .help = "Length of the CPU burn cycles", }, - { - .name = "direct", - .type = FIO_OPT_INT, - .off1 = td_var_offset(odirect), - .help = "Use O_DIRECT IO", - .def = "1", - }, - { - .name = "overwrite", - .type = FIO_OPT_INT, - .off1 = td_var_offset(overwrite), - .help = "When writing, set whether to overwrite current data", - .def = "0", - }, #ifdef FIO_HAVE_CPU_AFFINITY { .name = "cpumask", @@ -386,14 +399,14 @@ static struct fio_option options[] = { #endif { .name = "end_fsync", - .type = FIO_OPT_INT, + .type = FIO_OPT_BOOL, .off1 = td_var_offset(end_fsync), .help = "Include fsync at the end of job", .def = "0", }, { .name = "unlink", - .type = FIO_OPT_INT, + .type = FIO_OPT_BOOL, .off1 = td_var_offset(unlink), .help = "Unlink created files after job has completed", .def = "1", @@ -413,7 +426,7 @@ static struct fio_option options[] = { { .name = "thread", .type = FIO_OPT_STR_SET, - .off1 = td_var_offset(thread), + .off1 = td_var_offset(use_thread), .help = "Use threads instead of forks", }, { @@ -428,18 +441,6 @@ static struct fio_option options[] = { .off1 = td_var_offset(write_lat_log), .help = "Write log of latency during run", }, - { - .name = "norandommap", - .type = FIO_OPT_STR_SET, - .off1 = td_var_offset(norandommap), - .help = "Accept potential duplicate random blocks", - }, - { - .name = "bs_unaligned", - .type = FIO_OPT_STR_SET, - .off1 = td_var_offset(bs_unaligned), - .help = "Don't sector align IO buffer sizes", - }, { .name = "hugepage-size", .type = FIO_OPT_STR_VAL, @@ -1327,6 +1328,8 @@ int parse_options(int argc, char *argv[]) f_out = stdout; f_err = stderr; + options_init(options); + dupe_job_options(); if (setup_thread_area())