projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
HOWTO/manpage: update percentage explanation using '%'
[fio.git]
/
init.c
diff --git
a/init.c
b/init.c
index b4b09743f1c94225f48a5566462be84ddb27c810..a4b5adb8e2f30bf7e20100b34db12cd4b8a8a341 100644
(file)
--- a/
init.c
+++ b/
init.c
@@
-361,7
+361,7
@@
static int setup_thread_area(void)
#endif
memset(threads, 0, max_jobs * sizeof(struct thread_data));
#endif
memset(threads, 0, max_jobs * sizeof(struct thread_data));
- fio_debug_jobp = (
void *) threads + max_jobs * sizeof(struct thread_data
);
+ fio_debug_jobp = (
unsigned int *)(threads + max_jobs
);
*fio_debug_jobp = -1;
flow_init();
*fio_debug_jobp = -1;
flow_init();
@@
-459,6
+459,7
@@
static struct thread_data *get_new_job(bool global, struct thread_data *parent,
copy_opt_list(td, parent);
td->io_ops = NULL;
copy_opt_list(td, parent);
td->io_ops = NULL;
+ td->io_ops_init = 0;
if (!preserve_eo)
td->eo = NULL;
if (!preserve_eo)
td->eo = NULL;
@@
-522,7
+523,7
@@
static int __setup_rate(struct thread_data *td, enum fio_ddir ddir)
td->rate_next_io_time[ddir] = 0;
td->rate_io_issue_bytes[ddir] = 0;
td->rate_next_io_time[ddir] = 0;
td->rate_io_issue_bytes[ddir] = 0;
- td->last_usec = 0;
+ td->last_usec
[ddir]
= 0;
return 0;
}
return 0;
}
@@
-764,11
+765,8
@@
static int fixup_options(struct thread_data *td)
}
if (o->pre_read) {
}
if (o->pre_read) {
- if (o->invalidate_cache) {
- log_info("fio: ignore invalidate option for %s\n",
- o->name);
+ if (o->invalidate_cache)
o->invalidate_cache = 0;
o->invalidate_cache = 0;
- }
if (td_ioengine_flagged(td, FIO_PIPEIO)) {
log_info("fio: cannot pre-read files with an IO engine"
" that isn't seekable. Pre-read disabled.\n");
if (td_ioengine_flagged(td, FIO_PIPEIO)) {
log_info("fio: cannot pre-read files with an IO engine"
" that isn't seekable. Pre-read disabled.\n");
@@
-911,9
+909,9
@@
void td_fill_verify_state_seed(struct thread_data *td)
bool use64;
if (td->o.random_generator == FIO_RAND_GEN_TAUSWORTHE64)
bool use64;
if (td->o.random_generator == FIO_RAND_GEN_TAUSWORTHE64)
- use64 =
1
;
+ use64 =
true
;
else
else
- use64 =
0
;
+ use64 =
false
;
init_rand_seed(&td->verify_state, td->rand_seeds[FIO_RAND_VER_OFF],
use64);
init_rand_seed(&td->verify_state, td->rand_seeds[FIO_RAND_VER_OFF],
use64);
@@
-935,7
+933,9
@@
static void td_fill_rand_seeds_internal(struct thread_data *td, bool use64)
init_rand_seed(&td->file_size_state, td->rand_seeds[FIO_RAND_FILE_SIZE_OFF], use64);
init_rand_seed(&td->trim_state, td->rand_seeds[FIO_RAND_TRIM_OFF], use64);
init_rand_seed(&td->delay_state, td->rand_seeds[FIO_RAND_START_DELAY], use64);
init_rand_seed(&td->file_size_state, td->rand_seeds[FIO_RAND_FILE_SIZE_OFF], use64);
init_rand_seed(&td->trim_state, td->rand_seeds[FIO_RAND_TRIM_OFF], use64);
init_rand_seed(&td->delay_state, td->rand_seeds[FIO_RAND_START_DELAY], use64);
- init_rand_seed(&td->poisson_state, td->rand_seeds[FIO_RAND_POISSON_OFF], 0);
+ init_rand_seed(&td->poisson_state[0], td->rand_seeds[FIO_RAND_POISSON_OFF], 0);
+ init_rand_seed(&td->poisson_state[1], td->rand_seeds[FIO_RAND_POISSON2_OFF], 0);
+ init_rand_seed(&td->poisson_state[2], td->rand_seeds[FIO_RAND_POISSON3_OFF], 0);
init_rand_seed(&td->dedupe_state, td->rand_seeds[FIO_DEDUPE_OFF], false);
init_rand_seed(&td->zone_state, td->rand_seeds[FIO_RAND_ZONE_OFF], false);
init_rand_seed(&td->dedupe_state, td->rand_seeds[FIO_DEDUPE_OFF], false);
init_rand_seed(&td->zone_state, td->rand_seeds[FIO_RAND_ZONE_OFF], false);
@@
-967,9
+967,9
@@
void td_fill_rand_seeds(struct thread_data *td)
}
if (td->o.random_generator == FIO_RAND_GEN_TAUSWORTHE64)
}
if (td->o.random_generator == FIO_RAND_GEN_TAUSWORTHE64)
- use64 =
1
;
+ use64 =
true
;
else
else
- use64 =
0
;
+ use64 =
false
;
td_fill_rand_seeds_internal(td, use64);
td_fill_rand_seeds_internal(td, use64);
@@
-1070,6
+1070,9
@@
static void init_flags(struct thread_data *td)
if (o->verify_async || o->io_submit_mode == IO_MODE_OFFLOAD)
td->flags |= TD_F_NEED_LOCK;
if (o->verify_async || o->io_submit_mode == IO_MODE_OFFLOAD)
td->flags |= TD_F_NEED_LOCK;
+
+ if (o->mem_type == MEM_CUDA_MALLOC)
+ td->flags &= ~TD_F_SCRAMBLE_BUFFERS;
}
static int setup_random_seeds(struct thread_data *td)
}
static int setup_random_seeds(struct thread_data *td)
@@
-1077,8
+1080,12
@@
static int setup_random_seeds(struct thread_data *td)
unsigned long seed;
unsigned int i;
unsigned long seed;
unsigned int i;
- if (!td->o.rand_repeatable && !fio_option_is_set(&td->o, rand_seed))
- return init_random_state(td, td->rand_seeds, sizeof(td->rand_seeds));
+ if (!td->o.rand_repeatable && !fio_option_is_set(&td->o, rand_seed)) {
+ int ret = init_random_seeds(td->rand_seeds, sizeof(td->rand_seeds));
+ if (!ret)
+ td_fill_rand_seeds(td);
+ return ret;
+ }
seed = td->o.rand_seed;
for (i = 0; i < 4; i++)
seed = td->o.rand_seed;
for (i = 0; i < 4; i++)
@@
-1120,7
+1127,7
@@
static char *make_filename(char *buf, size_t buf_size,struct thread_options *o,
if (!o->filename_format || !strlen(o->filename_format)) {
sprintf(buf, "%s.%d.%d", jobname, jobnum, filenum);
if (!o->filename_format || !strlen(o->filename_format)) {
sprintf(buf, "%s.%d.%d", jobname, jobnum, filenum);
- return
NULL
;
+ return
buf
;
}
for (f = &fpre_keywords[0]; f->keyword; f++)
}
for (f = &fpre_keywords[0]; f->keyword; f++)
@@
-1357,6
+1364,7
@@
static int add_job(struct thread_data *td, const char *jobname, int job_add_num,
td->ts.slat_stat[i].min_val = ULONG_MAX;
td->ts.lat_stat[i].min_val = ULONG_MAX;
td->ts.bw_stat[i].min_val = ULONG_MAX;
td->ts.slat_stat[i].min_val = ULONG_MAX;
td->ts.lat_stat[i].min_val = ULONG_MAX;
td->ts.bw_stat[i].min_val = ULONG_MAX;
+ td->ts.iops_stat[i].min_val = ULONG_MAX;
}
td->ddir_seq_nr = o->ddir_seq_nr;
}
td->ddir_seq_nr = o->ddir_seq_nr;
@@
-1373,7
+1381,7
@@
static int add_job(struct thread_data *td, const char *jobname, int job_add_num,
prev_group_jobs++;
if (setup_random_seeds(td)) {
prev_group_jobs++;
if (setup_random_seeds(td)) {
- td_verror(td, errno, "
init_random_state
");
+ td_verror(td, errno, "
setup_random_seeds
");
goto err;
}
goto err;
}
@@
-2014,7
+2022,7
@@
static void usage(const char *name)
printf(" --version\t\tPrint version info and exit\n");
printf(" --help\t\tPrint this page\n");
printf(" --cpuclock-test\tPerform test/validation of CPU clock\n");
printf(" --version\t\tPrint version info and exit\n");
printf(" --help\t\tPrint this page\n");
printf(" --cpuclock-test\tPerform test/validation of CPU clock\n");
- printf(" --crctest=
type
\tTest speed of checksum functions\n");
+ printf(" --crctest=
[type]
\tTest speed of checksum functions\n");
printf(" --cmdhelp=cmd\t\tPrint command help, \"all\" for all of"
" them\n");
printf(" --enghelp=engine\tPrint ioengine help, or list"
printf(" --cmdhelp=cmd\t\tPrint command help, \"all\" for all of"
" them\n");
printf(" --enghelp=engine\tPrint ioengine help, or list"
@@
-2396,8
+2404,7
@@
int parse_cmd_line(int argc, char *argv[], int client_type)
break;
case 'V':
terse_version = atoi(optarg);
break;
case 'V':
terse_version = atoi(optarg);
- if (!(terse_version == 2 || terse_version == 3 ||
- terse_version == 4)) {
+ if (!(terse_version >= 2 && terse_version <= 5)) {
log_err("fio: bad terse version format\n");
exit_val = 1;
do_exit++;
log_err("fio: bad terse version format\n");
exit_val = 1;
do_exit++;