Merge branch 'master' of ssh://git.kernel.dk/data/git/fio
[fio.git] / file.h
diff --git a/file.h b/file.h
index 4d24bdc563399c02a7be6c2e431759ac1203ae87..22ec742fc1bc47deb22d5552202100b3ea042717 100644 (file)
--- a/file.h
+++ b/file.h
@@ -8,6 +8,7 @@
 #include "lib/zipf.h"
 #include "lib/axmap.h"
 #include "lib/lfsr.h"
+#include "lib/gauss.h"
 
 /*
  * The type of object we are working on
@@ -27,6 +28,8 @@ enum fio_file_flags {
        FIO_FILE_size_known     = 1 << 4,       /* size has been set */
        FIO_FILE_hashed         = 1 << 5,       /* file is on hash */
        FIO_FILE_partial_mmap   = 1 << 6,       /* can't do full mmap */
+       FIO_FILE_axmap          = 1 << 7,       /* uses axmap */
+       FIO_FILE_lfsr           = 1 << 8,       /* lfsr is used */
 };
 
 enum file_lock_mode {
@@ -73,9 +76,9 @@ struct fio_file {
        /*
         * filename and possible memory mapping
         */
-       char *file_name;
        unsigned int major, minor;
        int fileno;
+       char *file_name;
 
        /*
         * size of the file, offset into file, and io size from that offset
@@ -107,16 +110,20 @@ struct fio_file {
        };
 
        /*
-        * block map for random io
+        * block map or LFSR for random io
         */
-       struct axmap *io_axmap;
-
-       struct fio_lfsr lfsr;
+       union {
+               struct axmap *io_axmap;
+               struct fio_lfsr lfsr;
+       };
 
        /*
         * Used for zipf random distribution
         */
-       struct zipf_state zipf;
+       union {
+               struct zipf_state zipf;
+               struct gauss_state gauss;
+       };
 
        int references;
        enum fio_file_flags flags;
@@ -154,6 +161,8 @@ FILE_FLAG_FNS(done);
 FILE_FLAG_FNS(size_known);
 FILE_FLAG_FNS(hashed);
 FILE_FLAG_FNS(partial_mmap);
+FILE_FLAG_FNS(axmap);
+FILE_FLAG_FNS(lfsr);
 #undef FILE_FLAG_FNS
 
 /*