projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fio 1.39
[fio.git]
/
init.c
diff --git
a/init.c
b/init.c
index a79bd1a666a0ed6d2bc5562089c578abaec5f2d6..323793d5e9a4f97fa440b684855bd5c8022f233a 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.3
7
";
+static char fio_version_string[] = "fio 1.3
9
";
#define FIO_RANDSEED (0xb1899bedUL)
#define FIO_RANDSEED (0xb1899bedUL)
@@
-178,6
+178,8
@@
static void put_job(struct thread_data *td)
{
if (td == &def_thread)
return;
{
if (td == &def_thread)
return;
+
+ profile_td_exit(td);
if (td->error)
log_info("fio: %s\n", td->verror);
if (td->error)
log_info("fio: %s\n", td->verror);
@@
-234,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
@@
-281,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)
@@
-352,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
@@
-502,6
+508,9
@@
static int add_job(struct thread_data *td, const char *jobname, int job_add_num)
return 0;
}
return 0;
}
+ if (profile_td_init(td))
+ return 1;
+
engine = get_engine_name(td->o.ioengine);
td->io_ops = load_ioengine(td, engine);
if (!td->io_ops) {
engine = get_engine_name(td->o.ioengine);
td->io_ops = load_ioengine(td, engine);
if (!td->io_ops) {
@@
-767,6
+776,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;
@@
-775,8
+786,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 ");
@@
-872,9
+881,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;
}
@@
-983,6
+989,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, },
};
@@
-1066,7
+1073,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':