projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fio 1.41.6
[fio.git]
/
init.c
diff --git
a/init.c
b/init.c
index 5d185fe7e7dbbe90d82462d76072063d33205f17..37c414ebbfef129bd07f75dedd6677cc3657c5df 100644
(file)
--- a/
init.c
+++ b/
init.c
@@
-21,7
+21,7
@@
#include "verify.h"
#include "profile.h"
#include "verify.h"
#include "profile.h"
-static char fio_version_string[] = "fio 1.
37
";
+static char fio_version_string[] = "fio 1.
41.6
";
#define FIO_RANDSEED (0xb1899bedUL)
#define FIO_RANDSEED (0xb1899bedUL)
@@
-236,11
+236,11
@@
static int fixup_options(struct thread_data *td)
struct thread_options *o = &td->o;
#ifndef FIO_HAVE_PSHARED_MUTEX
struct thread_options *o = &td->o;
#ifndef FIO_HAVE_PSHARED_MUTEX
- if (!
td->o.
use_thread) {
+ if (!
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");
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;
+
o->
use_thread = 1;
}
#endif
}
#endif
@@
-283,9
+283,9
@@
static int fixup_options(struct thread_data *td)
if ((o->ba[DDIR_READ] != o->min_bs[DDIR_READ] ||
o->ba[DDIR_WRITE] != o->min_bs[DDIR_WRITE]) &&
if ((o->ba[DDIR_READ] != o->min_bs[DDIR_READ] ||
o->ba[DDIR_WRITE] != o->min_bs[DDIR_WRITE]) &&
- !
td->o.
norandommap) {
+ !
o->
norandommap) {
log_err("fio: Any use of blockalign= turns off randommap\n");
log_err("fio: Any use of blockalign= turns off randommap\n");
-
td->o.
norandommap = 1;
+
o->
norandommap = 1;
}
if (!o->file_size_high)
}
if (!o->file_size_high)
@@
-354,28
+354,32
@@
static int fixup_options(struct thread_data *td)
if (o->fill_device && !o->size)
o->size = -1ULL;
if (o->fill_device && !o->size)
o->size = -1ULL;
- if (td_rw(td) &&
td->o.
verify != VERIFY_NONE)
+ if (td_rw(td) &&
o->
verify != VERIFY_NONE)
log_info("fio: mixed read/write workload with verify. May not "
"work as expected, unless you pre-populated the file\n");
log_info("fio: mixed read/write workload with verify. May not "
"work as expected, unless you pre-populated the file\n");
- if (td->o.verify != VERIFY_NONE)
- td->o.refill_buffers = 1;
+ if (o->verify != VERIFY_NONE) {
+ o->refill_buffers = 1;
+ if (o->max_bs[DDIR_WRITE] != o->min_bs[DDIR_WRITE] &&
+ !o->verify_interval)
+ o->verify_interval = o->min_bs[DDIR_WRITE];
+ }
- if (
td->o.
pre_read) {
-
td->o.
invalidate_cache = 0;
+ if (
o->
pre_read) {
+
o->
invalidate_cache = 0;
if (td->io_ops->flags & FIO_PIPEIO)
log_info("fio: cannot pre-read files with an IO engine"
" that isn't seekable. Pre-read disabled.\n");
}
#ifndef FIO_HAVE_FDATASYNC
if (td->io_ops->flags & FIO_PIPEIO)
log_info("fio: cannot pre-read files with an IO engine"
" that isn't seekable. Pre-read disabled.\n");
}
#ifndef FIO_HAVE_FDATASYNC
- if (
td->o.
fdatasync_blocks) {
+ if (
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");
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;
+
o->fsync_blocks = o->
fdatasync_blocks;
+
o->
fdatasync_blocks = 0;
}
#endif
}
#endif
@@
-551,6
+555,7
@@
static int add_job(struct thread_data *td, const char *jobname, int job_add_num)
td->ts.clat_stat[0].min_val = td->ts.clat_stat[1].min_val = ULONG_MAX;
td->ts.slat_stat[0].min_val = td->ts.slat_stat[1].min_val = ULONG_MAX;
td->ts.clat_stat[0].min_val = td->ts.clat_stat[1].min_val = ULONG_MAX;
td->ts.slat_stat[0].min_val = td->ts.slat_stat[1].min_val = ULONG_MAX;
+ td->ts.lat_stat[0].min_val = td->ts.lat_stat[1].min_val = ULONG_MAX;
td->ts.bw_stat[0].min_val = td->ts.bw_stat[1].min_val = ULONG_MAX;
td->ddir_nr = td->o.ddir_nr;
td->ts.bw_stat[0].min_val = td->ts.bw_stat[1].min_val = ULONG_MAX;
td->ddir_nr = td->o.ddir_nr;
@@
-569,6
+574,7
@@
static int add_job(struct thread_data *td, const char *jobname, int job_add_num)
goto err;
if (td->o.write_lat_log) {
goto err;
if (td->o.write_lat_log) {
+ setup_log(&td->ts.lat_log);
setup_log(&td->ts.slat_log);
setup_log(&td->ts.clat_log);
}
setup_log(&td->ts.slat_log);
setup_log(&td->ts.clat_log);
}
@@
-772,6
+778,8
@@
static int parse_jobs_ini(char *file, int stonewall_flag)
break;
}
break;
}
+ name[strlen(name) - 1] = '\0';
+
if (skip_this_section(name)) {
inside_skip = 1;
continue;
if (skip_this_section(name)) {
inside_skip = 1;
continue;
@@
-780,8
+788,6
@@
static int parse_jobs_ini(char *file, int stonewall_flag)
global = !strncmp(name, "global", 6);
global = !strncmp(name, "global", 6);
- name[strlen(name) - 1] = '\0';
-
if (dump_cmdline) {
if (first_sect)
log_info("fio ");
if (dump_cmdline) {
if (first_sect)
log_info("fio ");
@@
-877,9
+883,6
@@
static int fill_def_thread(void)
fio_fill_default_options(&def_thread);
def_thread.o.timeout = def_timeout;
fio_fill_default_options(&def_thread);
def_thread.o.timeout = def_timeout;
- def_thread.o.write_bw_log = write_bw_log;
- def_thread.o.write_lat_log = write_lat_log;
-
return 0;
}
return 0;
}
@@
-971,7
+974,8
@@
static void usage(const char *name)
printf("\t--section=name\tOnly run specified section in job file\n");
printf("\t--alloc-size=kb\tSet smalloc pool to this size in kb"
" (def 1024)\n");
printf("\t--section=name\tOnly run specified section in job file\n");
printf("\t--alloc-size=kb\tSet smalloc pool to this size in kb"
" (def 1024)\n");
- printf("\nFio was written by Jens Axboe <jens.axboe@oracle.com>\n");
+ printf("\nFio was written by Jens Axboe <jens.axboe@oracle.com>");
+ printf("\n Jens Axboe <jaxboe@fusionio.com>\n");
}
#ifdef FIO_INC_DEBUG
}
#ifdef FIO_INC_DEBUG
@@
-988,6
+992,7
@@
struct debug_level debug_levels[] = {
{ .name = "job", .shift = FD_JOB },
{ .name = "mutex", .shift = FD_MUTEX },
{ .name = "profile", .shift = FD_PROFILE },
{ .name = "job", .shift = FD_JOB },
{ .name = "mutex", .shift = FD_MUTEX },
{ .name = "profile", .shift = FD_PROFILE },
+ { .name = "time", .shift = FD_TIME },
{ .name = NULL, },
};
{ .name = NULL, },
};
@@
-1071,7
+1076,7
@@
static int parse_cmd_line(int argc, char *argv[])
case 'l':
write_lat_log = 1;
break;
case 'l':
write_lat_log = 1;
break;
- case '
w
':
+ case '
b
':
write_bw_log = 1;
break;
case 'o':
write_bw_log = 1;
break;
case 'o':