log: use __log_buf() if we know buf != NULL
[fio.git] / thread_options.h
index 92a3cfdb1bd16d68cee4ef5800c8a93fa91514b0..393158340e96a52a8068cd39d0d8c3c6c4cc4da3 100644 (file)
 #include "lib/pattern.h"
 #include "td_error.h"
 
+enum fio_zone_mode {
+       ZONE_MODE_NOT_SPECIFIED = 0,
+       ZONE_MODE_NONE          = 1,
+       ZONE_MODE_STRIDED       = 2, /* perform I/O in one zone at a time */
+       /* perform I/O across multiple zones simultaneously */
+       ZONE_MODE_ZBD           = 3,
+};
+
 /*
  * What type of allocation to use for io buffers
  */
@@ -29,7 +37,7 @@ enum fio_memtype {
 #define ZONESPLIT_MAX  256
 
 struct bssplit {
-       uint32_t bs;
+       uint64_t bs;
        uint32_t perc;
 };
 
@@ -82,10 +90,10 @@ struct thread_options {
        unsigned long long start_offset;
        unsigned long long start_offset_align;
 
-       unsigned int bs[DDIR_RWDIR_CNT];
-       unsigned int ba[DDIR_RWDIR_CNT];
-       unsigned int min_bs[DDIR_RWDIR_CNT];
-       unsigned int max_bs[DDIR_RWDIR_CNT];
+       unsigned long long bs[DDIR_RWDIR_CNT];
+       unsigned long long ba[DDIR_RWDIR_CNT];
+       unsigned long long min_bs[DDIR_RWDIR_CNT];
+       unsigned long long max_bs[DDIR_RWDIR_CNT];
        struct bssplit *bssplit[DDIR_RWDIR_CNT];
        unsigned int bssplit_nr[DDIR_RWDIR_CNT];
 
@@ -164,7 +172,8 @@ struct thread_options {
        unsigned int perc_rand[DDIR_RWDIR_CNT];
 
        unsigned int hugepage_size;
-       unsigned int rw_min_bs;
+       unsigned long long rw_min_bs;
+       unsigned int pad2;
        unsigned int thinktime;
        unsigned int thinktime_spin;
        unsigned int thinktime_blocks;
@@ -187,6 +196,7 @@ struct thread_options {
        unsigned long long zone_range;
        unsigned long long zone_size;
        unsigned long long zone_skip;
+       enum fio_zone_mode zone_mode;
        unsigned long long lockmem;
        enum fio_memtype mem_type;
        unsigned int mem_align;
@@ -324,6 +334,12 @@ struct thread_options {
 
        unsigned int allow_create;
        unsigned int allow_mounted_write;
+
+       /* Parameters that affect zonemode=zbd */
+       unsigned int read_beyond_wp;
+       int max_open_zones;
+       fio_fp64_t zrt;
+       fio_fp64_t zrf;
 };
 
 #define FIO_TOP_STR_MAX                256
@@ -364,10 +380,10 @@ struct thread_options_pack {
        uint64_t start_offset;
        uint64_t start_offset_align;
 
-       uint32_t bs[DDIR_RWDIR_CNT];
-       uint32_t ba[DDIR_RWDIR_CNT];
-       uint32_t min_bs[DDIR_RWDIR_CNT];
-       uint32_t max_bs[DDIR_RWDIR_CNT];
+       uint64_t bs[DDIR_RWDIR_CNT];
+       uint64_t ba[DDIR_RWDIR_CNT];
+       uint64_t min_bs[DDIR_RWDIR_CNT];
+       uint64_t max_bs[DDIR_RWDIR_CNT];
        struct bssplit bssplit[DDIR_RWDIR_CNT][BSSPLIT_MAX];
        uint32_t bssplit_nr[DDIR_RWDIR_CNT];
 
@@ -444,7 +460,8 @@ struct thread_options_pack {
        uint32_t perc_rand[DDIR_RWDIR_CNT];
 
        uint32_t hugepage_size;
-       uint32_t rw_min_bs;
+       uint64_t rw_min_bs;
+       uint32_t pad2;
        uint32_t thinktime;
        uint32_t thinktime_spin;
        uint32_t thinktime_blocks;
@@ -599,6 +616,8 @@ struct thread_options_pack {
 
        uint32_t allow_create;
        uint32_t allow_mounted_write;
+
+       uint32_t zone_mode;
 } __attribute__((packed));
 
 extern void convert_thread_options_to_cpu(struct thread_options *o, struct thread_options_pack *top);