X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=init.c;h=19c6340e2fa7d4e9a5b1e224d5f03c6651473e01;hb=d3e829b399a44b6d6ce9596a05f7a4bff5025573;hp=4bb917235930b53213e21877164e7f294a1d9ef5;hpb=3f5bf577570e77231a245c3a90b4002244d1382e;p=fio.git diff --git a/init.c b/init.c index 4bb91723..19c6340e 100644 --- a/init.c +++ b/init.c @@ -20,7 +20,7 @@ #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) @@ -181,6 +181,8 @@ static struct thread_data *get_new_job(int global, struct thread_data *parent) td = &threads[thread_number++]; *td = *parent; + td->o.uid = td->o.gid = -1U; + dup_files(td, parent); options_mem_dupe(td); @@ -203,21 +205,19 @@ static void put_job(struct thread_data *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; } @@ -382,6 +382,17 @@ static int fixup_options(struct thread_data *td) " 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; }