projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Only call into log_io_piece() when verify is set
[fio.git]
/
fio.h
diff --git
a/fio.h
b/fio.h
index 6e9311be9517347892e1adc4dd8037f57676c31d..4d7e6ea7d8410132e787e577631c44a24b1b440d 100644
(file)
--- a/
fio.h
+++ b/
fio.h
@@
-14,6
+14,7
@@
#include <getopt.h>
#include "list.h"
#include <getopt.h>
#include "list.h"
+#include "rbtree.h"
#include "md5.h"
#include "crc32.h"
#include "arch.h"
#include "md5.h"
#include "crc32.h"
#include "arch.h"
@@
-24,6
+25,10
@@
#include "syslet.h"
#endif
#include "syslet.h"
#endif
+#ifdef FIO_HAVE_GUASI
+#include <guasi.h>
+#endif
+
enum fio_ddir {
DDIR_READ = 0,
DDIR_WRITE,
enum fio_ddir {
DDIR_READ = 0,
DDIR_WRITE,
@@
-74,7
+79,10
@@
struct io_log {
* When logging io actions, this matches a single sent io_u
*/
struct io_piece {
* When logging io actions, this matches a single sent io_u
*/
struct io_piece {
- struct list_head list;
+ union {
+ struct rb_node rb_node;
+ struct list_head list;
+ };
struct fio_file *file;
unsigned long long offset;
unsigned long len;
struct fio_file *file;
unsigned long long offset;
unsigned long len;
@@
-94,6
+102,8
@@
enum {
IO_U_F_FLIGHT = 1 << 1,
};
IO_U_F_FLIGHT = 1 << 1,
};
+struct thread_data;
+
/*
* The io unit
*/
/*
* The io unit
*/
@@
-110,6
+120,9
@@
struct io_u {
#endif
#ifdef FIO_HAVE_SYSLET
struct syslet_req req;
#endif
#ifdef FIO_HAVE_SYSLET
struct syslet_req req;
+#endif
+#ifdef FIO_HAVE_GUASI
+ guasi_req_t greq;
#endif
};
struct timeval start_time;
#endif
};
struct timeval start_time;
@@
-151,7
+164,7
@@
struct io_u {
/*
* Callback for io completion
*/
/*
* Callback for io completion
*/
- int (*end_io)(struct io_u *);
+ int (*end_io)(struct
thread_data *, struct
io_u *);
};
/*
};
/*
@@
-169,6
+182,7
@@
enum {
VERIFY_NONE = 0, /* no verification */
VERIFY_MD5, /* md5 sum data blocks */
VERIFY_CRC32, /* crc32 sum data blocks */
VERIFY_NONE = 0, /* no verification */
VERIFY_MD5, /* md5 sum data blocks */
VERIFY_CRC32, /* crc32 sum data blocks */
+ VERIFY_NULL, /* pretend to verify */
};
/*
};
/*
@@
-318,6
+332,7
@@
struct thread_options {
char *opendir;
char *ioengine;
enum td_ddir td_ddir;
char *opendir;
char *ioengine;
enum td_ddir td_ddir;
+ unsigned int ddir_nr;
unsigned int iodepth;
unsigned int iodepth_low;
unsigned int iodepth_batch;
unsigned int iodepth;
unsigned int iodepth_low;
unsigned int iodepth_batch;
@@
-368,16
+383,17
@@
struct thread_options {
enum fio_memtype mem_type;
unsigned int stonewall;
enum fio_memtype mem_type;
unsigned int stonewall;
+ unsigned int new_group;
unsigned int numjobs;
os_cpu_mask_t cpumask;
unsigned int iolog;
unsigned int read_iolog;
unsigned int rwmixcycle;
unsigned int numjobs;
os_cpu_mask_t cpumask;
unsigned int iolog;
unsigned int read_iolog;
unsigned int rwmixcycle;
- unsigned int rwmixread;
- unsigned int rwmixwrite;
+ unsigned int rwmix[2];
unsigned int nice;
unsigned int file_service_type;
unsigned int group_reporting;
unsigned int nice;
unsigned int file_service_type;
unsigned int group_reporting;
+ unsigned int fadvise_hint;
char *read_iolog_file;
char *write_iolog_file;
char *read_iolog_file;
char *write_iolog_file;
@@
-403,12
+419,14
@@
struct thread_options {
unsigned int cpucycle;
};
unsigned int cpucycle;
};
+#define FIO_VERROR_SIZE 128
+
/*
* This describes a single thread/process executing a fio job.
*/
struct thread_data {
struct thread_options o;
/*
* This describes a single thread/process executing a fio job.
*/
struct thread_data {
struct thread_options o;
- char verror[
128
];
+ char verror[
FIO_VERROR_SIZE
];
pthread_t thread;
int thread_number;
int groupid;
pthread_t thread;
int thread_number;
int groupid;
@@
-484,18
+502,22
@@
struct thread_data {
struct timeval start; /* start of this loop */
struct timeval epoch; /* time job was started */
struct timeval start; /* start of this loop */
struct timeval epoch; /* time job was started */
+ struct timeval rw_end[2];
+ unsigned int rw_end_set[2];
/*
* read/write mixed workload state
*/
os_random_state_t rwmix_state;
/*
* read/write mixed workload state
*/
os_random_state_t rwmix_state;
+ unsigned long long rwmix_bytes;
struct timeval rwmix_switch;
enum fio_ddir rwmix_ddir;
struct timeval rwmix_switch;
enum fio_ddir rwmix_ddir;
+ unsigned int ddir_nr;
/*
* IO historic logs
*/
/*
* IO historic logs
*/
- struct
list_head io_hist_list
;
+ struct
rb_root io_hist_tree
;
struct list_head io_log_list;
/*
struct list_head io_log_list;
/*
@@
-676,6
+698,8
@@
extern int fio_cmd_option_parse(struct thread_data *, const char *, char *);
extern void fio_fill_default_options(struct thread_data *);
extern int fio_show_option_help(const char *);
extern void fio_options_dup_and_init(struct option *);
extern void fio_fill_default_options(struct thread_data *);
extern int fio_show_option_help(const char *);
extern void fio_options_dup_and_init(struct option *);
+extern void options_mem_dupe(struct thread_data *);
+extern void options_mem_free(struct thread_data *);
#define FIO_GETOPT_JOB 0x89988998
#define FIO_NR_OPTIONS 128
#define FIO_GETOPT_JOB 0x89988998
#define FIO_NR_OPTIONS 128
@@
-693,6
+717,7
@@
extern void get_file(struct fio_file *);
extern void put_file(struct thread_data *, struct fio_file *);
extern int add_dir_files(struct thread_data *, const char *);
extern int init_random_map(struct thread_data *);
extern void put_file(struct thread_data *, struct fio_file *);
extern int add_dir_files(struct thread_data *, const char *);
extern int init_random_map(struct thread_data *);
+extern void dup_files(struct thread_data *, struct thread_data *);
/*
* ETA/status stuff
/*
* ETA/status stuff
@@
-722,7
+747,7
@@
enum {
*/
extern void populate_verify_io_u(struct thread_data *, struct io_u *);
extern int __must_check get_next_verify(struct thread_data *td, struct io_u *);
*/
extern void populate_verify_io_u(struct thread_data *, struct io_u *);
extern int __must_check get_next_verify(struct thread_data *td, struct io_u *);
-extern int __must_check verify_io_u(struct io_u *);
+extern int __must_check verify_io_u(struct
thread_data *, struct
io_u *);
/*
* Memory helpers
/*
* Memory helpers