projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' of https://github.com/bvanassche/fio
[fio.git]
/
init.c
diff --git
a/init.c
b/init.c
index 8a80138394cfdf81689f23f3f057c653874b3b86..e47e5384119b369891119b54467ed558dfa082c3 100644
(file)
--- a/
init.c
+++ b/
init.c
@@
-12,6
+12,11
@@
#include <sys/types.h>
#include <sys/stat.h>
#include <dlfcn.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <dlfcn.h>
+#ifdef CONFIG_VALGRIND_DEV
+#include <valgrind/drd.h>
+#else
+#define DRD_IGNORE_VAR(x) do { } while (0)
+#endif
#include "fio.h"
#ifndef FIO_NO_HAVE_SHM_H
#include "fio.h"
#ifndef FIO_NO_HAVE_SHM_H
@@
-79,6
+84,7
@@
static int prev_group_jobs;
unsigned long fio_debug = 0;
unsigned int fio_debug_jobno = -1;
unsigned int *fio_debug_jobp = NULL;
unsigned long fio_debug = 0;
unsigned int fio_debug_jobno = -1;
unsigned int *fio_debug_jobp = NULL;
+unsigned int *fio_warned = NULL;
static char cmd_optstr[256];
static bool did_arg;
static char cmd_optstr[256];
static bool did_arg;
@@
-309,6
+315,7
@@
static void free_shm(void)
if (threads) {
flow_exit();
fio_debug_jobp = NULL;
if (threads) {
flow_exit();
fio_debug_jobp = NULL;
+ fio_warned = NULL;
free_threads_shm();
}
free_threads_shm();
}
@@
-331,6
+338,8
@@
static void free_shm(void)
*/
static int setup_thread_area(void)
{
*/
static int setup_thread_area(void)
{
+ int i;
+
if (threads)
return 0;
if (threads)
return 0;
@@
-341,7
+350,7
@@
static int setup_thread_area(void)
do {
size_t size = max_jobs * sizeof(struct thread_data);
do {
size_t size = max_jobs * sizeof(struct thread_data);
- size += sizeof(unsigned int);
+ size +=
2 *
sizeof(unsigned int);
#ifndef CONFIG_NO_SHM
shm_id = shmget(0, size, IPC_CREAT | 0600);
#ifndef CONFIG_NO_SHM
shm_id = shmget(0, size, IPC_CREAT | 0600);
@@
-374,8
+383,12
@@
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));
+ for (i = 0; i < max_jobs; i++)
+ DRD_IGNORE_VAR(threads[i]);
fio_debug_jobp = (unsigned int *)(threads + max_jobs);
*fio_debug_jobp = -1;
fio_debug_jobp = (unsigned int *)(threads + max_jobs);
*fio_debug_jobp = -1;
+ fio_warned = fio_debug_jobp + 1;
+ *fio_warned = 0;
flow_init();
flow_init();
@@
-802,11
+815,12
@@
static int fixup_options(struct thread_data *td)
o->verify_interval = o->min_bs[DDIR_READ];
/*
o->verify_interval = o->min_bs[DDIR_READ];
/*
- * Verify interval must be a factor o
r
both min and max
+ * Verify interval must be a factor o
f
both min and max
* write size
*/
* write size
*/
- if (o->verify_interval % o->min_bs[DDIR_WRITE] ||
- o->verify_interval % o->max_bs[DDIR_WRITE])
+ if (!o->verify_interval ||
+ (o->min_bs[DDIR_WRITE] % o->verify_interval) ||
+ (o->max_bs[DDIR_WRITE] % o->verify_interval))
o->verify_interval = gcd(o->min_bs[DDIR_WRITE],
o->max_bs[DDIR_WRITE]);
}
o->verify_interval = gcd(o->min_bs[DDIR_WRITE],
o->max_bs[DDIR_WRITE]);
}
@@
-1466,7
+1480,7
@@
static int add_job(struct thread_data *td, const char *jobname, int job_add_num,
f->real_file_size = -1ULL;
}
f->real_file_size = -1ULL;
}
- td->
mutex = fio_mutex_init(FIO_MUTEX
_LOCKED);
+ td->
sem = fio_sem_init(FIO_SEM
_LOCKED);
td->ts.clat_percentiles = o->clat_percentiles;
td->ts.lat_percentiles = o->lat_percentiles;
td->ts.clat_percentiles = o->clat_percentiles;
td->ts.lat_percentiles = o->lat_percentiles;
@@
-1481,6
+1495,7
@@
static int add_job(struct thread_data *td, const char *jobname, int job_add_num,
td->ts.bw_stat[i].min_val = ULONG_MAX;
td->ts.iops_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->ts.sync_stat.min_val = ULONG_MAX;
td->ddir_seq_nr = o->ddir_seq_nr;
if ((o->stonewall || o->new_group) && prev_group_jobs) {
td->ddir_seq_nr = o->ddir_seq_nr;
if ((o->stonewall || o->new_group) && prev_group_jobs) {
@@
-1584,7
+1599,7
@@
static int add_job(struct thread_data *td, const char *jobname, int job_add_num,
p.avg_msec = min(o->log_avg_msec, o->bw_avg_time);
else
o->bw_avg_time = p.avg_msec;
p.avg_msec = min(o->log_avg_msec, o->bw_avg_time);
else
o->bw_avg_time = p.avg_msec;
-
+
p.hist_msec = o->log_hist_msec;
p.hist_coarseness = o->log_hist_coarseness;
p.hist_msec = o->log_hist_msec;
p.hist_coarseness = o->log_hist_coarseness;
@@
-1615,7
+1630,7
@@
static int add_job(struct thread_data *td, const char *jobname, int job_add_num,
p.avg_msec = min(o->log_avg_msec, o->iops_avg_time);
else
o->iops_avg_time = p.avg_msec;
p.avg_msec = min(o->log_avg_msec, o->iops_avg_time);
else
o->iops_avg_time = p.avg_msec;
-
+
p.hist_msec = o->log_hist_msec;
p.hist_coarseness = o->log_hist_coarseness;
p.hist_msec = o->log_hist_msec;
p.hist_coarseness = o->log_hist_coarseness;
@@
-2088,7
+2103,7
@@
static int fill_def_thread(void)
static void show_debug_categories(void)
{
#ifdef FIO_INC_DEBUG
static void show_debug_categories(void)
{
#ifdef FIO_INC_DEBUG
- struct debug_level *dl = &debug_levels[0];
+
const
struct debug_level *dl = &debug_levels[0];
int curlen, first = 1;
curlen = 0;
int curlen, first = 1;
curlen = 0;
@@
-2178,7
+2193,7
@@
static void usage(const char *name)
}
#ifdef FIO_INC_DEBUG
}
#ifdef FIO_INC_DEBUG
-struct debug_level debug_levels[] = {
+
const
struct debug_level debug_levels[] = {
{ .name = "process",
.help = "Process creation/exit logging",
.shift = FD_PROCESS,
{ .name = "process",
.help = "Process creation/exit logging",
.shift = FD_PROCESS,
@@
-2256,7
+2271,7
@@
struct debug_level debug_levels[] = {
static int set_debug(const char *string)
{
static int set_debug(const char *string)
{
- struct debug_level *dl;
+
const
struct debug_level *dl;
char *p = (char *) string;
char *opt;
int i;
char *p = (char *) string;
char *opt;
int i;