[PATCH] Allow proper sharing of files
[fio.git] / fio.h
diff --git a/fio.h b/fio.h
index dbce4af347ec34ae85d93b0e2242256c5f957b39..a183d72d09bf8bb14b811338e5f07476f140ed11 100644 (file)
--- a/fio.h
+++ b/fio.h
@@ -61,6 +61,7 @@ struct io_u {
        char *buf;
        unsigned int buflen;
        unsigned long long offset;
        char *buf;
        unsigned int buflen;
        unsigned long long offset;
+       unsigned int index;
 
        unsigned int resid;
        unsigned int error;
 
        unsigned int resid;
        unsigned int error;
@@ -90,10 +91,10 @@ struct verify_header {
 };
 
 struct group_run_stats {
 };
 
 struct group_run_stats {
-       unsigned long max_run[2], min_run[2];
-       unsigned long max_bw[2], min_bw[2];
-       unsigned long io_mb[2];
-       unsigned long agg[2];
+       unsigned long long max_run[2], min_run[2];
+       unsigned long long max_bw[2], min_bw[2];
+       unsigned long long io_mb[2];
+       unsigned long long agg[2];
 };
 
 struct thread_data {
 };
 
 struct thread_data {
@@ -133,7 +134,10 @@ struct thread_data {
        unsigned int create_fsync;
        unsigned int loops;
        unsigned long long file_size;
        unsigned int create_fsync;
        unsigned int loops;
        unsigned long long file_size;
+       unsigned long long real_file_size;
        unsigned long long file_offset;
        unsigned long long file_offset;
+       unsigned long long zone_size;
+       unsigned long long zone_skip;
        unsigned int sync_io;
        unsigned int mem_type;
        unsigned int verify;
        unsigned int sync_io;
        unsigned int mem_type;
        unsigned int verify;
@@ -142,14 +146,13 @@ struct thread_data {
        unsigned int use_thread;
        unsigned int iodepth;
        os_cpu_mask_t cpumask;
        unsigned int use_thread;
        unsigned int iodepth;
        os_cpu_mask_t cpumask;
+       unsigned int jobnum;
 
        struct drand48_data bsrange_state;
        struct drand48_data verify_state;
 
        int shm_id;
 
 
        struct drand48_data bsrange_state;
        struct drand48_data verify_state;
 
        int shm_id;
 
-       unsigned long long cur_off;
-
        void *io_data;
        char io_engine_name[16];
        int (*io_prep)(struct thread_data *, struct io_u *);
        void *io_data;
        char io_engine_name[16];
        int (*io_prep)(struct thread_data *, struct io_u *);
@@ -176,10 +179,11 @@ struct thread_data {
        unsigned long long io_size;
        unsigned long long total_io_size;
 
        unsigned long long io_size;
        unsigned long long total_io_size;
 
-       unsigned long io_blocks[2];
-       unsigned long io_bytes[2];
-       unsigned long this_io_bytes[2];
-       unsigned long last_bytes;
+       unsigned long long io_blocks[2];
+       unsigned long long io_bytes[2];
+       unsigned long long zone_bytes;
+       unsigned long long this_io_bytes[2];
+       unsigned long long last_pos;
        sem_t mutex;
 
        struct drand48_data random_state;
        sem_t mutex;
 
        struct drand48_data random_state;
@@ -193,7 +197,7 @@ struct thread_data {
        struct io_stat slat_stat[2];            /* submission latency */
        struct io_stat bw_stat[2];              /* bandwidth stats */
 
        struct io_stat slat_stat[2];            /* submission latency */
        struct io_stat bw_stat[2];              /* bandwidth stats */
 
-       unsigned long stat_io_bytes[2];
+       unsigned long long stat_io_bytes[2];
        struct timeval stat_sample_time[2];
 
        struct io_log *slat_log;
        struct timeval stat_sample_time[2];
 
        struct io_log *slat_log;
@@ -226,6 +230,8 @@ extern int parse_jobs_ini(char *);
 extern int parse_options(int, char **);
 extern void finish_log(struct thread_data *, struct io_log *, const char *);
 extern int init_random_state(struct thread_data *);
 extern int parse_options(int, char **);
 extern void finish_log(struct thread_data *, struct io_log *, const char *);
 extern int init_random_state(struct thread_data *);
+extern struct io_u *__get_io_u(struct thread_data *);
+extern void put_io_u(struct thread_data *, struct io_u *);
 
 extern int rate_quit;
 extern int write_lat_log;
 
 extern int rate_quit;
 extern int write_lat_log;
@@ -257,6 +263,7 @@ enum {
 enum {
        FIO_TYPE_FILE = 1,
        FIO_TYPE_BD,
 enum {
        FIO_TYPE_FILE = 1,
        FIO_TYPE_BD,
+       FIO_TYPE_CHAR,
 };
 
 enum {
 };
 
 enum {
@@ -309,4 +316,8 @@ struct io_completion_data {
 
 #define DISK_UTIL_MSEC (250)
 
 
 #define DISK_UTIL_MSEC (250)
 
+#ifndef min
+#define min(a, b)      ((a) < (b) ? (a) : (b))
+#endif
+
 #endif
 #endif