Move completion handler into the io_u
[fio.git] / fio.h
diff --git a/fio.h b/fio.h
index 8880ea61e7a518c02bc33840f9b0f8571a0c6b76..f2366c4c9a946ed6e0e2bcac06f551b936890010 100644 (file)
--- a/fio.h
+++ b/fio.h
@@ -29,10 +29,13 @@ enum fio_ddir {
 };
 
 enum td_ddir {
-       TD_DDIR_READ    = 1 << 0,
-       TD_DDIR_WRITE   = 1 << 1,
-       TD_DDIR_RAND    = 1 << 2,
-       TD_DDIR_RW      = TD_DDIR_READ | TD_DDIR_WRITE,
+       TD_DDIR_READ            = 1 << 0,
+       TD_DDIR_WRITE           = 1 << 1,
+       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_RANDRW          = TD_DDIR_RW | TD_DDIR_RAND,
 };
 
 /*
@@ -141,6 +144,11 @@ struct io_u {
        struct fio_file *file;
 
        struct list_head list;
+
+       /*
+        * Callback for io completion
+        */
+       int (*end_io)(struct io_u *);
 };
 
 /*
@@ -274,6 +282,7 @@ struct thread_stat {
  * This describes a single thread/process executing a fio job.
  */
 struct thread_data {
+       int pad;
        char *description;
        char *name;
        char *directory;
@@ -540,11 +549,6 @@ struct disk_util {
        struct timeval time;
 };
 
-/*
- * Callback for io completion
- */
-typedef int (endio_handler)(struct io_u *);
-
 #define DISK_UTIL_MSEC (250)
 
 #ifndef min
@@ -659,8 +663,8 @@ extern struct io_u *__get_io_u(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 void requeue_io_u(struct thread_data *, struct io_u **);
-extern long __must_check io_u_sync_complete(struct thread_data *, struct io_u *, endio_handler *);
-extern long __must_check io_u_queued_complete(struct thread_data *, int, endio_handler *);
+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_init_timeout(void);
 extern void io_u_set_timeout(struct thread_data *);