#include <getopt.h>
#include "list.h"
+#include "rbtree.h"
#include "md5.h"
#include "crc32.h"
#include "arch.h"
* 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;
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 nice;
unsigned int file_service_type;
unsigned int group_reporting;
+ unsigned int fadvise_hint;
char *read_iolog_file;
char *write_iolog_file;
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
unsigned long long rwmix_bytes;
struct timeval rwmix_switch;
enum fio_ddir rwmix_ddir;
+ unsigned int ddir_nr;
/*
* IO historic logs
*/
- struct list_head io_hist_list;
+ struct rb_root io_hist_tree;
struct list_head io_log_list;
/*
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
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