Pack io_u/fio_file
[fio.git] / file.h
diff --git a/file.h b/file.h
index bb303103048cd847e3918efc18c98efbda1950fb..fc473102ae3565276db1f6c3d8906f19a089915a 100644 (file)
--- a/file.h
+++ b/file.h
@@ -27,6 +27,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,13 +75,9 @@ struct fio_file {
        /*
         * filename and possible memory mapping
         */
-       char *file_name;
        unsigned int major, minor;
        int fileno;
-
-       void *mmap_ptr;
-       size_t mmap_sz;
-       off_t mmap_off;
+       char *file_name;
 
        /*
         * size of the file, offset into file, and io size from that offset
@@ -111,11 +109,12 @@ 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
@@ -128,6 +127,10 @@ struct fio_file {
        struct disk_util *du;
 };
 
+#define FILE_ENG_DATA(f)       ((void *) (uintptr_t) (f)->engine_data)
+#define FILE_SET_ENG_DATA(f, data)     \
+       ((f)->engine_data = (uintptr_t) (data))
+
 struct file_name {
        struct flist_head list;
        char *filename;
@@ -154,6 +157,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
 
 /*