implement zoned random I/O testing support
[fio.git] / fio.h
diff --git a/fio.h b/fio.h
index cc1f65f51b5bc358b5a2ad2097a34bdfa6ff0e68..a9286b86729d6231c899ab533b4ab13110513266 100644 (file)
--- a/fio.h
+++ b/fio.h
@@ -65,6 +65,17 @@ enum {
        RW_SEQ_IDENT,
 };
 
+/*
+ * What type of errors to continue on when continue_on_error is used
+ */
+enum error_type {
+        ERROR_TYPE_NONE = 0,
+        ERROR_TYPE_READ = 1 << 0,
+        ERROR_TYPE_WRITE = 1 << 1,
+        ERROR_TYPE_VERIFY = 1 << 2,
+        ERROR_TYPE_ANY = 0xffff,
+};
+
 struct bssplit {
        unsigned int bs;
        unsigned char perc;
@@ -136,6 +147,7 @@ struct thread_options {
        unsigned int write_lat_log;
        unsigned int write_bw_log;
        unsigned int write_iops_log;
+       unsigned int log_avg_msec;
        unsigned int norandommap;
        unsigned int softrandommap;
        unsigned int bs_unaligned;
@@ -156,6 +168,7 @@ struct thread_options {
        unsigned int bw_avg_time;
        unsigned int iops_avg_time;
        unsigned int loops;
+       unsigned long long zone_range;
        unsigned long long zone_size;
        unsigned long long zone_skip;
        enum fio_memtype mem_type;
@@ -227,7 +240,7 @@ struct thread_options {
        /*
         * I/O Error handling
         */
-       unsigned int continue_on_error;
+       enum error_type continue_on_error;
 
        /*
         * Benchmark profile type
@@ -520,6 +533,15 @@ static inline void fio_ro_check(struct thread_data *td, struct io_u *io_u)
 
 #define td_non_fatal_error(e)  ((e) == EIO || (e) == EILSEQ)
 
+static inline enum error_type td_error_type(enum fio_ddir ddir, int err)
+{
+       if (err == EILSEQ)
+               return ERROR_TYPE_VERIFY;
+       if (ddir == DDIR_READ)
+               return ERROR_TYPE_READ;
+       return ERROR_TYPE_WRITE;
+}
+
 static inline void update_error_count(struct thread_data *td, int err)
 {
        td->total_err_count++;