static char **ini_file;
static int max_jobs = FIO_MAX_JOBS;
static int dump_cmdline;
-static long long def_timeout;
static int parse_only;
static struct thread_data def_thread;
.has_arg = required_argument,
.val = 'o' | FIO_CLIENT_FLAG,
},
- {
- .name = (char *) "timeout",
- .has_arg = required_argument,
- .val = 't' | FIO_CLIENT_FLAG,
- },
{
.name = (char *) "latency-log",
.has_arg = required_argument,
return 0;
}
-static void set_cmd_options(struct thread_data *td)
-{
- struct thread_options *o = &td->o;
-
- if (!o->timeout)
- o->timeout = def_timeout;
-}
-
static void dump_print_option(struct print_option *p)
{
const char *delim;
{
struct thread_data *td;
- if (global) {
- set_cmd_options(&def_thread);
+ if (global)
return &def_thread;
- }
if (setup_thread_area()) {
log_err("error: failed to setup shm segment\n");
return NULL;
if (!parent->o.group_reporting || parent == &def_thread)
stat_number++;
- set_cmd_options(td);
return td;
}
return delayrange;
}
+/*
+ * <3 Johannes
+ */
+static unsigned int gcd(unsigned int m, unsigned int n)
+{
+ if (!n)
+ return m;
+
+ return gcd(n, m % n);
+}
+
/*
* Lazy way of fixing up options that depend on each other. We could also
* define option callback handlers, but this is easier.
o->verify_interval = o->min_bs[DDIR_WRITE];
else if (td_read(td) && o->verify_interval > o->min_bs[DDIR_READ])
o->verify_interval = o->min_bs[DDIR_READ];
+
+ /*
+ * Verify interval must be a factor or both min and max
+ * write size
+ */
+ if (o->verify_interval % o->min_bs[DDIR_WRITE] ||
+ o->verify_interval % o->max_bs[DDIR_WRITE])
+ o->verify_interval = gcd(o->min_bs[DDIR_WRITE],
+ o->max_bs[DDIR_WRITE]);
}
if (o->pre_read) {
#endif
}
+/*
+ * Following options aren't printed by usage().
+ * --append-terse - Equivalent to --output-format=terse, see f6a7df53.
+ * --latency-log - Deprecated option.
+ */
static void usage(const char *name)
{
printf("%s\n", fio_version_string);
show_debug_categories();
printf(" --parse-only\t\tParse options only, don't start any IO\n");
printf(" --output\t\tWrite output to file\n");
- printf(" --runtime\t\tRuntime in seconds\n");
printf(" --bandwidth-log\tGenerate aggregate bandwidth logs\n");
printf(" --minimal\t\tMinimal (terse) output\n");
printf(" --output-format=type\tOutput format (terse,json,json+,normal)\n");
smalloc_pool_size <<= 10;
sinit();
break;
- case 't':
- if (check_str_time(optarg, &def_timeout, 1)) {
- log_err("fio: failed parsing time %s\n", optarg);
- do_exit++;
- exit_val = 1;
- }
- break;
case 'l':
log_err("fio: --latency-log is deprecated. Use per-job latency log options.\n");
do_exit++;