Only call into log_io_piece() when verify is set
[fio.git] / fio.h
diff --git a/fio.h b/fio.h
index 8a79289cb77fe9c8d14535276b8181ad41686b5a..4d7e6ea7d8410132e787e577631c44a24b1b440d 100644 (file)
--- a/fio.h
+++ b/fio.h
@@ -14,6 +14,7 @@
 #include <getopt.h>
 
 #include "list.h"
+#include "rbtree.h"
 #include "md5.h"
 #include "crc32.h"
 #include "arch.h"
@@ -78,7 +79,10 @@ struct io_log {
  * 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;
@@ -98,6 +102,8 @@ enum {
        IO_U_F_FLIGHT   = 1 << 1,
 };
 
+struct thread_data;
+
 /*
  * The io unit
  */
@@ -158,7 +164,7 @@ struct io_u {
        /*
         * Callback for io completion
         */
-       int (*end_io)(struct io_u *);
+       int (*end_io)(struct thread_data *, struct io_u *);
 };
 
 /*
@@ -176,6 +182,7 @@ enum {
        VERIFY_NONE = 0,                /* no verification */
        VERIFY_MD5,                     /* md5 sum data blocks */
        VERIFY_CRC32,                   /* crc32 sum data blocks */
+       VERIFY_NULL,                    /* pretend to verify */
 };
 
 /*
@@ -510,7 +517,7 @@ struct thread_data {
        /*
         * IO historic logs
         */
-       struct list_head io_hist_list;
+       struct rb_root io_hist_tree;
        struct list_head io_log_list;
 
        /*
@@ -691,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 options_mem_dupe(struct thread_data *);
+extern void options_mem_free(struct thread_data *);
 #define FIO_GETOPT_JOB         0x89988998
 #define FIO_NR_OPTIONS         128
 
@@ -738,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 int __must_check verify_io_u(struct io_u *);
+extern int __must_check verify_io_u(struct thread_data *, struct io_u *);
 
 /*
  * Memory helpers