#include "filehash.h"
#include "verify.h"
-static char fio_version_string[] = "fio 1.35";
+static char fio_version_string[] = "fio 1.37";
#define FIO_RANDSEED (0xb1899bedUL)
td = &threads[thread_number++];
*td = *parent;
+ td->o.uid = td->o.gid = -1U;
+
dup_files(td, parent);
options_mem_dupe(td);
static int __setup_rate(struct thread_data *td, enum fio_ddir ddir)
{
unsigned int bs = td->o.min_bs[ddir];
- unsigned long long rate;
- unsigned long ios_per_msec;
+ unsigned long long bytes_per_sec;
- if (td->o.rate[ddir]) {
- rate = td->o.rate[ddir];
- ios_per_msec = (rate * 1000LL) / bs;
- } else
- ios_per_msec = td->o.rate_iops[ddir] * 1000UL;
+ if (td->o.rate[ddir])
+ bytes_per_sec = td->o.rate[ddir];
+ else
+ bytes_per_sec = td->o.rate_iops[ddir] * bs;
- if (!ios_per_msec) {
+ if (!bytes_per_sec) {
log_err("rate lower than supported\n");
return -1;
}
- td->rate_usec_cycle[ddir] = 1000000000ULL / ios_per_msec;
+ td->rate_nsec_cycle[ddir] = 1000000000ULL / bytes_per_sec;
td->rate_pending_usleep[ddir] = 0;
return 0;
}
" that isn't seekable. Pre-read disabled.\n");
}
+#ifndef FIO_HAVE_FDATASYNC
+ if (td->o.fdatasync_blocks) {
+ log_info("fio: this platform does not support fdatasync()"
+ " falling back to using fsync(). Use the 'fsync'"
+ " option instead of 'fdatasync' to get rid of"
+ " this warning\n");
+ td->o.fsync_blocks = td->o.fdatasync_blocks;
+ td->o.fdatasync_blocks = 0;
+ }
+#endif
+
return 0;
}
int i, in_global = 1;
char jobname[32];
- dprint(FD_PARSE, "loading profile %s\n", profile);
+ dprint(FD_PARSE, "loading profile '%s'\n", profile);
for (i = 0; i < PROFILE_END; i++) {
if (!strcmp(profile, profiles[i]))
}
if (i == PROFILE_END) {
- log_err("fio: unknown profile %s\n", profile);
+ log_err("fio: unknown profile '%s'\n", profile);
return 1;
}