Add support for absolute random zones
[fio.git] / fio.h
diff --git a/fio.h b/fio.h
index 8814d84eed133127b4213db17a073e5b855a8d67..a44f1aae47212b9e4065255a68c34dee25480f29 100644 (file)
--- a/fio.h
+++ b/fio.h
@@ -72,22 +72,42 @@ enum {
 };
 
 enum {
-       TD_F_VER_BACKLOG        = 1U << 0,
-       TD_F_TRIM_BACKLOG       = 1U << 1,
-       TD_F_READ_IOLOG         = 1U << 2,
-       TD_F_REFILL_BUFFERS     = 1U << 3,
-       TD_F_SCRAMBLE_BUFFERS   = 1U << 4,
-       TD_F_VER_NONE           = 1U << 5,
-       TD_F_PROFILE_OPS        = 1U << 6,
-       TD_F_COMPRESS           = 1U << 7,
-       TD_F_RESERVED           = 1U << 8, /* not used */
-       TD_F_COMPRESS_LOG       = 1U << 9,
-       TD_F_VSTATE_SAVED       = 1U << 10,
-       TD_F_NEED_LOCK          = 1U << 11,
-       TD_F_CHILD              = 1U << 12,
-       TD_F_NO_PROGRESS        = 1U << 13,
-       TD_F_REGROW_LOGS        = 1U << 14,
-       TD_F_MMAP_KEEP          = 1U << 15,
+       __TD_F_VER_BACKLOG      = 0,
+       __TD_F_TRIM_BACKLOG,
+       __TD_F_READ_IOLOG,
+       __TD_F_REFILL_BUFFERS,
+       __TD_F_SCRAMBLE_BUFFERS,
+       __TD_F_VER_NONE,
+       __TD_F_PROFILE_OPS,
+       __TD_F_COMPRESS,
+       __TD_F_COMPRESS_LOG,
+       __TD_F_VSTATE_SAVED,
+       __TD_F_NEED_LOCK,
+       __TD_F_CHILD,
+       __TD_F_NO_PROGRESS,
+       __TD_F_REGROW_LOGS,
+       __TD_F_MMAP_KEEP,
+       __TD_F_DIRS_CREATED,
+       __TD_F_LAST,            /* not a real bit, keep last */
+};
+
+enum {
+       TD_F_VER_BACKLOG        = 1U << __TD_F_VER_BACKLOG,
+       TD_F_TRIM_BACKLOG       = 1U << __TD_F_TRIM_BACKLOG,
+       TD_F_READ_IOLOG         = 1U << __TD_F_READ_IOLOG,
+       TD_F_REFILL_BUFFERS     = 1U << __TD_F_REFILL_BUFFERS,
+       TD_F_SCRAMBLE_BUFFERS   = 1U << __TD_F_SCRAMBLE_BUFFERS,
+       TD_F_VER_NONE           = 1U << __TD_F_VER_NONE,
+       TD_F_PROFILE_OPS        = 1U << __TD_F_PROFILE_OPS,
+       TD_F_COMPRESS           = 1U << __TD_F_COMPRESS,
+       TD_F_COMPRESS_LOG       = 1U << __TD_F_COMPRESS_LOG,
+       TD_F_VSTATE_SAVED       = 1U << __TD_F_VSTATE_SAVED,
+       TD_F_NEED_LOCK          = 1U << __TD_F_NEED_LOCK,
+       TD_F_CHILD              = 1U << __TD_F_CHILD,
+       TD_F_NO_PROGRESS        = 1U << __TD_F_NO_PROGRESS,
+       TD_F_REGROW_LOGS        = 1U << __TD_F_REGROW_LOGS,
+       TD_F_MMAP_KEEP          = 1U << __TD_F_MMAP_KEEP,
+       TD_F_DIRS_CREATED       = 1U << __TD_F_DIRS_CREATED,
 };
 
 enum {
@@ -138,6 +158,8 @@ void sk_out_drop(void);
 struct zone_split_index {
        uint8_t size_perc;
        uint8_t size_perc_prev;
+       uint64_t size;
+       uint64_t size_prev;
 };
 
 /*
@@ -591,12 +613,6 @@ enum {
 #define TD_ENG_FLAG_SHIFT      16
 #define TD_ENG_FLAG_MASK       ((1U << 16) - 1)
 
-static inline enum fio_ioengine_flags td_ioengine_flags(struct thread_data *td)
-{
-       return (enum fio_ioengine_flags)
-               ((td->flags >> TD_ENG_FLAG_SHIFT) & TD_ENG_FLAG_MASK);
-}
-
 static inline void td_set_ioengine_flags(struct thread_data *td)
 {
        td->flags = (~(TD_ENG_FLAG_MASK << TD_ENG_FLAG_SHIFT) & td->flags) |
@@ -799,6 +815,7 @@ enum {
        FIO_RAND_DIST_PARETO,
        FIO_RAND_DIST_GAUSS,
        FIO_RAND_DIST_ZONED,
+       FIO_RAND_DIST_ZONED_ABS,
 };
 
 #define FIO_DEF_ZIPF           1.1