Add gtod_reduce option
[fio.git] / fio.h
diff --git a/fio.h b/fio.h
index 63cd83f5e1be23d4548739a682947667f131533e..3e39aeae315b5f05831cd13fedefd0f26b790b02 100644 (file)
--- a/fio.h
+++ b/fio.h
@@ -496,6 +496,10 @@ struct thread_options {
        unsigned int zero_buffers;
        unsigned int refill_buffers;
        unsigned int time_based;
+       unsigned int disable_clat;
+       unsigned int disable_slat;
+       unsigned int disable_bw;
+       unsigned int gtod_reduce;
 
        char *read_iolog_file;
        char *write_iolog_file;
@@ -609,6 +613,9 @@ struct thread_data {
        struct timeval epoch;   /* time job was started */
        struct timeval rw_end[2];
        struct timeval last_issue;
+       struct timeval tv_cache;
+       unsigned int tv_cache_nr;
+       unsigned int tv_cache_mask;
        unsigned int rw_end_set[2];
        unsigned int ramp_time_over;
 
@@ -632,12 +639,6 @@ struct thread_data {
         */
        struct flist_head io_log_list;
 
-       /*
-        * timeout handling
-        */
-       struct timeval timeout_end;
-       struct itimerval timer;
-
        /*
         * for fileservice, how often to switch to a new file
         */
@@ -668,13 +669,6 @@ enum {
        FIO_ETA_NEVER,
 };
 
-/*
- * 30 second per-io_u timeout, with 5 second intervals to avoid resetting
- * the timer on each queue operation.
- */
-#define IO_U_TIMEOUT_INC       5
-#define IO_U_TIMEOUT           30
-
 #define __td_verror(td, err, msg, func)                                        \
        do {                                                            \
                if ((td)->error)                                        \
@@ -937,8 +931,6 @@ extern long __must_check io_u_sync_complete(struct thread_data *, struct io_u *)
 extern long __must_check io_u_queued_complete(struct thread_data *, int);
 extern void io_u_queued(struct thread_data *, struct io_u *);
 extern void io_u_log_error(struct thread_data *, struct io_u *);
-extern void io_u_init_timeout(void);
-extern void io_u_set_timeout(struct thread_data *);
 extern void io_u_mark_depth(struct thread_data *, unsigned int);
 extern void io_u_fill_buffer(struct thread_data *td, struct io_u *, unsigned int);
 void io_u_mark_complete(struct thread_data *, unsigned int);
@@ -1052,4 +1044,13 @@ static inline void dprint_io_u(struct io_u *io_u, const char *p)
 #define dprint_io_u(io_u, p)
 #endif
 
+static inline int fio_fill_issue_time(struct thread_data *td)
+{
+       if (td->o.read_iolog_file ||
+           !td->o.disable_clat || !td->o.disable_slat || !td->o.disable_bw)
+               return 1;
+
+       return 0;
+}
+
 #endif