projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
net: don't record/verify UDP sequence numbers if buffer is too small
[fio.git]
/
fio.h
diff --git
a/fio.h
b/fio.h
index 4ab28256801a40be41a29854af522c2839b74946..d28f8ce59cf15cee75c86d13f95099894dd2b547 100644
(file)
--- a/
fio.h
+++ b/
fio.h
@@
-74,6
+74,7
@@
enum {
TD_F_COMPRESS = 128,
TD_F_NOIO = 256,
TD_F_COMPRESS_LOG = 512,
TD_F_COMPRESS = 128,
TD_F_NOIO = 256,
TD_F_COMPRESS_LOG = 512,
+ TD_F_VSTATE_SAVED = 1024,
};
enum {
};
enum {
@@
-123,6
+124,13
@@
struct thread_data {
uint64_t stat_io_blocks[DDIR_RWDIR_CNT];
struct timeval iops_sample_time;
uint64_t stat_io_blocks[DDIR_RWDIR_CNT];
struct timeval iops_sample_time;
+ /*
+ * Tracks the last iodepth number of completed writes, if data
+ * verification is enabled
+ */
+ uint64_t *last_write_comp;
+ unsigned int last_write_idx;
+
volatile int update_rusage;
struct fio_mutex *rusage_sem;
struct rusage ru_start;
volatile int update_rusage;
struct fio_mutex *rusage_sem;
struct rusage ru_start;
@@
-137,11
+145,12
@@
struct thread_data {
unsigned int nr_normal_files;
union {
unsigned int next_file;
unsigned int nr_normal_files;
union {
unsigned int next_file;
- struct frand_state
__
next_file_state;
+ struct frand_state next_file_state;
};
int error;
int sig;
int done;
};
int error;
int sig;
int done;
+ int stop_io;
pid_t pid;
char *orig_buffer;
size_t orig_buffer_size;
pid_t pid;
char *orig_buffer;
size_t orig_buffer_size;
@@
-159,10
+168,10
@@
struct thread_data {
unsigned long rand_seeds[FIO_RAND_NR_OFFS];
unsigned long rand_seeds[FIO_RAND_NR_OFFS];
- struct frand_state
__
bsrange_state;
- struct frand_state
__
verify_state;
- struct frand_state
__
trim_state;
- struct frand_state
__
delay_state;
+ struct frand_state bsrange_state;
+ struct frand_state verify_state;
+ struct frand_state trim_state;
+ struct frand_state delay_state;
struct frand_state buf_state;
struct frand_state buf_state_prev;
struct frand_state buf_state;
struct frand_state buf_state_prev;
@@
-171,6
+180,8
@@
struct thread_data {
unsigned int verify_batch;
unsigned int trim_batch;
unsigned int verify_batch;
unsigned int trim_batch;
+ struct thread_io_list *vstate;
+
int shm_id;
/*
int shm_id;
/*
@@
-224,7
+235,15
@@
struct thread_data {
uint64_t total_io_size;
uint64_t fill_device_size;
uint64_t total_io_size;
uint64_t fill_device_size;
- unsigned long io_issues[DDIR_RWDIR_CNT];
+ /*
+ * Issue side
+ */
+ uint64_t io_issues[DDIR_RWDIR_CNT];
+ uint64_t io_issue_bytes[DDIR_RWDIR_CNT];
+
+ /*
+ * Completions
+ */
uint64_t io_blocks[DDIR_RWDIR_CNT];
uint64_t this_io_blocks[DDIR_RWDIR_CNT];
uint64_t io_bytes[DDIR_RWDIR_CNT];
uint64_t io_blocks[DDIR_RWDIR_CNT];
uint64_t this_io_blocks[DDIR_RWDIR_CNT];
uint64_t io_bytes[DDIR_RWDIR_CNT];
@@
-236,11
+255,12
@@
struct thread_data {
/*
* State for random io, a bitmap of blocks done vs not done
*/
/*
* State for random io, a bitmap of blocks done vs not done
*/
- struct frand_state
__
random_state;
+ struct frand_state random_state;
struct timeval start; /* start of this loop */
struct timeval epoch; /* time job was started */
struct timeval last_issue;
struct timeval start; /* start of this loop */
struct timeval epoch; /* time job was started */
struct timeval last_issue;
+ long time_offset;
struct timeval tv_cache;
struct timeval terminate_time;
unsigned int tv_cache_nr;
struct timeval tv_cache;
struct timeval terminate_time;
unsigned int tv_cache_nr;
@@
-261,7
+281,7
@@
struct thread_data {
/*
* read/write mixed workload state
*/
/*
* read/write mixed workload state
*/
- struct frand_state
__
rwmix_state;
+ struct frand_state rwmix_state;
unsigned long rwmix_issues;
enum fio_ddir rwmix_ddir;
unsigned int ddir_seq_nr;
unsigned long rwmix_issues;
enum fio_ddir rwmix_ddir;
unsigned int ddir_seq_nr;
@@
-269,7
+289,7
@@
struct thread_data {
/*
* rand/seq mixed workload state
*/
/*
* rand/seq mixed workload state
*/
- struct frand_state
__
seq_rand_state[DDIR_RWDIR_CNT];
+ struct frand_state seq_rand_state[DDIR_RWDIR_CNT];
/*
* IO history logs for verification. We use a tree for sorting,
/*
* IO history logs for verification. We use a tree for sorting,
@@
-304,7
+324,7
@@
struct thread_data {
/*
* For generating file sizes
*/
/*
* For generating file sizes
*/
- struct frand_state
__
file_size_state;
+ struct frand_state file_size_state;
/*
* Error counts
/*
* Error counts
@@
-380,6
+400,10
@@
extern int status_interval;
extern const char fio_version_string[];
extern int helper_do_stat;
extern pthread_cond_t helper_cond;
extern const char fio_version_string[];
extern int helper_do_stat;
extern pthread_cond_t helper_cond;
+extern char *trigger_file;
+extern char *trigger_cmd;
+extern char *trigger_remote_cmd;
+extern long long trigger_timeout;
extern struct thread_data *threads;
extern struct thread_data *threads;
@@
-422,7
+446,7
@@
extern void fio_options_mem_dupe(struct thread_data *);
extern void options_mem_dupe(void *data, struct fio_option *options);
extern void td_fill_rand_seeds(struct thread_data *);
extern void add_job_opts(const char **, int);
extern void options_mem_dupe(void *data, struct fio_option *options);
extern void td_fill_rand_seeds(struct thread_data *);
extern void add_job_opts(const char **, int);
-extern char *num2str(u
nsigned long
, int, int, int, int);
+extern char *num2str(u
int64_t
, int, int, int, int);
extern int ioengine_load(struct thread_data *);
extern int parse_dryrun(void);
extern int fio_running_or_pending_io_threads(void);
extern int ioengine_load(struct thread_data *);
extern int parse_dryrun(void);
extern int fio_running_or_pending_io_threads(void);
@@
-580,7
+604,7
@@
static inline unsigned int td_min_bs(struct thread_data *td)
return min(td->o.min_bs[DDIR_TRIM], min_bs);
}
return min(td->o.min_bs[DDIR_TRIM], min_bs);
}
-static inline int is_power_of_2(u
nsigned long
val)
+static inline int is_power_of_2(u
int64_t
val)
{
return (val != 0 && ((val & (val - 1)) == 0));
}
{
return (val != 0 && ((val & (val - 1)) == 0));
}
@@
-626,6
+650,9
@@
enum {
FIO_RAND_DIST_PARETO,
};
FIO_RAND_DIST_PARETO,
};
+#define FIO_DEF_ZIPF 1.1
+#define FIO_DEF_PARETO 0.2
+
enum {
FIO_RAND_GEN_TAUSWORTHE = 0,
FIO_RAND_GEN_LFSR,
enum {
FIO_RAND_GEN_TAUSWORTHE = 0,
FIO_RAND_GEN_LFSR,
@@
-636,4
+663,7
@@
enum {
FIO_CPUS_SPLIT,
};
FIO_CPUS_SPLIT,
};
+extern void exec_trigger(const char *);
+extern void check_trigger_file(void);
+
#endif
#endif