td vs ts typo
[fio.git] / fio.h
diff --git a/fio.h b/fio.h
index 6d0c9e31f36164db8062bfa6d2a2ab74ab1e65ce..1b933ca137c43632eeb98c620b2fbc47f711a2bd 100644 (file)
--- a/fio.h
+++ b/fio.h
@@ -34,7 +34,7 @@ enum td_ddir {
        TD_DDIR_RAND            = 1 << 2,
        TD_DDIR_RW              = TD_DDIR_READ | TD_DDIR_WRITE,
        TD_DDIR_RANDREAD        = TD_DDIR_READ | TD_DDIR_RAND,
-       TD_DDIR_RANDWRITE       = TD_DDIR_WRITE | TD_DDIR_READ,
+       TD_DDIR_RANDWRITE       = TD_DDIR_WRITE | TD_DDIR_RAND,
        TD_DDIR_RANDRW          = TD_DDIR_RW | TD_DDIR_RAND,
 };
 
@@ -214,8 +214,8 @@ enum fio_ioengine_flags {
        FIO_CPUIO       = 1 << 1,       /* cpu burner, doesn't do real io */
        FIO_MMAPIO      = 1 << 2,       /* uses memory mapped io */
        FIO_RAWIO       = 1 << 3,       /* some sort of direct/raw io */
-       FIO_NETIO       = 1 << 4,       /* networked io */
-       FIO_NULLIO      = 1 << 5,       /* no real data transfer (cpu/null) */
+       FIO_DISKLESSIO  = 1 << 4,       /* no disk involved */
+       FIO_SELFOPEN    = 1 << 5,       /* opens its own devices */
 };
 
 /*
@@ -248,7 +248,20 @@ struct fio_file {
        unsigned int unlink;
 };
 
+/*
+ * How many depth levels to log
+ */
+#define FIO_IO_U_MAP_NR        8
+#define FIO_IO_U_LAT_NR 12
+
 struct thread_stat {
+       char *name;
+       char *verror;
+       int error;
+       int groupid;
+       pid_t pid;
+       char *description;
+
        struct io_log *slat_log;
        struct io_log *clat_log;
        struct io_log *bw_log;
@@ -271,13 +284,18 @@ struct thread_stat {
        unsigned long usr_time;
        unsigned long sys_time;
        unsigned long ctx;
-};
 
-/*
- * How many depth levels to log
- */
-#define FIO_IO_U_MAP_NR        8
-#define FIO_IO_U_LAT_NR 12
+       /*
+        * IO depth and latency stats
+        */
+       unsigned int io_u_map[FIO_IO_U_MAP_NR];
+       unsigned int io_u_lat[FIO_IO_U_LAT_NR];
+       unsigned long total_io_u;
+
+       unsigned long long io_bytes[2];
+       unsigned long runtime[2];
+       unsigned long total_run_time;
+};
 
 /*
  * This describes a single thread/process executing a fio job.
@@ -288,7 +306,7 @@ struct thread_data {
        char *name;
        char *directory;
        char *filename;
-       char verror[80];
+       char verror[128];
        pthread_t thread;
        int thread_number;
        int groupid;
@@ -296,6 +314,7 @@ struct thread_data {
        enum fio_filetype filetype;
        struct fio_file *files;
        unsigned int nr_files;
+       unsigned int nr_open_files;
        unsigned int nr_uniq_files;
        union {
                unsigned int next_file;
@@ -360,6 +379,7 @@ struct thread_data {
        unsigned int rwmixwrite;
        unsigned int nice;
        unsigned int file_service_type;
+       unsigned int group_reporting;
 
        char *read_iolog_file;
        char *write_iolog_file;
@@ -384,9 +404,6 @@ struct thread_data {
         * Current IO depth and list of free and busy io_u's.
         */
        unsigned int cur_depth;
-       unsigned int io_u_map[FIO_IO_U_MAP_NR];
-       unsigned int io_u_lat[FIO_IO_U_LAT_NR];
-       unsigned long total_io_u;
        struct list_head io_u_freelist;
        struct list_head io_u_busylist;
        struct list_head io_u_requeues;
@@ -403,7 +420,6 @@ struct thread_data {
        unsigned long rate_bytes;
        struct timeval lastrate;
 
-       unsigned long runtime[2];               /* msec */
        unsigned long long io_size;
        unsigned long long total_file_size;
        unsigned long long start_offset;
@@ -429,7 +445,6 @@ struct thread_data {
 
        struct timeval start;   /* start of this loop */
        struct timeval epoch;   /* time job was started */
-       struct timeval end_time;/* time job ended */
 
        /*
         * read/write mixed workload state
@@ -618,6 +633,8 @@ extern int __must_check init_random_state(struct thread_data *);
 extern void close_files(struct thread_data *);
 extern int __must_check setup_files(struct thread_data *);
 extern int __must_check open_files(struct thread_data *);
+extern int open_file(struct thread_data *, struct fio_file *, int, int);
+extern void close_file(struct thread_data *, struct fio_file *);
 extern int __must_check file_invalidate_cache(struct thread_data *, struct fio_file *);
 
 /*
@@ -669,6 +686,7 @@ extern void requeue_io_u(struct thread_data *, struct io_u **);
 extern long __must_check io_u_sync_complete(struct thread_data *, struct io_u *);
 extern long __must_check io_u_queued_complete(struct thread_data *, int);
 extern void io_u_queued(struct thread_data *, struct io_u *);
+extern void io_u_log_error(struct thread_data *, struct io_u *);
 extern void io_u_init_timeout(void);
 extern void io_u_set_timeout(struct thread_data *);
 
@@ -715,6 +733,9 @@ static inline void fio_sem_up(volatile int *sem)
                fprintf(stderr, ##args);        \
        } while (0)
 
+FILE *get_f_out(void);
+FILE *get_f_err(void);
+
 struct ioengine_ops {
        struct list_head list;
        char name[16];