#include "smalloc.h"
#include "filehash.h"
-static char fio_version_string[] = "fio 1.23";
+static char fio_version_string[] = "fio 1.24";
#define FIO_RANDSEED (0xb1899bedUL)
static int max_jobs = MAX_JOBS;
static int dump_cmdline;
-struct thread_data def_thread;
+static struct thread_data def_thread;
struct thread_data *threads = NULL;
int exitall_on_terminate = 0;
return 0;
}
+static int fixed_block_size(struct thread_options *o)
+{
+ return o->min_bs[DDIR_READ] == o->max_bs[DDIR_READ] &&
+ o->min_bs[DDIR_WRITE] == o->max_bs[DDIR_WRITE] &&
+ o->min_bs[DDIR_READ] == o->min_bs[DDIR_WRITE];
+}
+
/*
* Lazy way of fixing up options that depend on each other. We could also
* define option callback handlers, but this is easier.
{
struct thread_options *o = &td->o;
+#ifndef FIO_HAVE_PSHARED_MUTEX
+ if (!td->o.use_thread) {
+ log_info("fio: this platform does not support process shared"
+ " mutexes, forcing use of threads. Use the 'thread'"
+ " option to get rid of this warning.\n");
+ td->o.use_thread = 1;
+ }
+#endif
+
+#ifndef FIO_HAVE_CPU_AFFINITY
+ if (td->o.gtod_cpu) {
+ log_err("fio: platform must support CPU affinity for"
+ "gettimeofday() offloading\n");
+ return 1;
+ }
+#endif
+
if (read_only && td_write(td)) {
log_err("fio: job <%s> has write bit set, but fio is in"
" read-only mode\n", td->o.name);
if (!o->file_size_high)
o->file_size_high = o->file_size_low;
- if (o->norandommap && o->verify != VERIFY_NONE) {
- log_err("fio: norandommap given, verify disabled\n");
+ if (o->norandommap && o->verify != VERIFY_NONE
+ && !fixed_block_size(o)) {
+ log_err("fio: norandommap given for variable block sizes, "
+ "verify disabled\n");
o->verify = VERIFY_NONE;
}
if (o->bs_unaligned && (o->odirect || td->io_ops->flags & FIO_RAWIO))
{ .name = "parse", .shift = FD_PARSE },
{ .name = "diskutil", .shift = FD_DISKUTIL },
{ .name = "job", .shift = FD_JOB },
+ { .name = "mutex", .shift = FD_MUTEX },
{ .name = NULL, },
};
return 1;
}
+ if (def_thread.o.gtod_offload) {
+ fio_gtod_init();
+ fio_gtod_offload = 1;
+ fio_gtod_cpu = def_thread.o.gtod_cpu;
+ }
+
return 0;
}