Merge branch 'master' of ssh://router/data/git/fio
[fio.git] / fio.h
diff --git a/fio.h b/fio.h
index cb80a11117837f79e062ce34e7cade40c13078d0..c9fa6a9fa8672b5af02181cced08bd17189882f0 100644 (file)
--- a/fio.h
+++ b/fio.h
@@ -145,7 +145,6 @@ struct io_u {
        void *buf;
        unsigned long buflen;
        unsigned long long offset;
-       unsigned long long endpos;
 
        /*
         * IO engine state, may be different from above when we get
@@ -343,6 +342,8 @@ struct fio_file {
 
        int references;
        enum fio_file_flags flags;
+
+       struct disk_util *du;
 };
 
 /*
@@ -786,8 +787,29 @@ struct disk_util {
 
        unsigned long msec;
        struct timeval time;
+
+       struct fio_mutex *lock;
+       unsigned long users;
 };
 
+static inline void disk_util_inc(struct disk_util *du)
+{
+       if (du) {
+               fio_mutex_down(du->lock);
+               du->users++;
+               fio_mutex_up(du->lock);
+       }
+}
+
+static inline void disk_util_dec(struct disk_util *du)
+{
+       if (du) {
+               fio_mutex_down(du->lock);
+               du->users--;
+               fio_mutex_up(du->lock);
+       }
+}
+
 #define DISK_UTIL_MSEC (250)
 
 /*
@@ -919,6 +941,7 @@ enum {
        TD_INITIALIZED,
        TD_RAMP,
        TD_RUNNING,
+       TD_PRE_READING,
        TD_VERIFYING,
        TD_FSYNCING,
        TD_EXITED,