Move completion handler into the io_u

This is needed for completions that happen outside of fio,
or more specifically, for syslet to enable completions in
a ->queue() hook combined with ->commit().

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
diff --git a/fio.h b/fio.h
index 6abbd79..f2366c4 100644
--- a/fio.h
+++ b/fio.h
@@ -144,6 +144,11 @@
 	struct fio_file *file;
 
 	struct list_head list;
+
+	/*
+	 * Callback for io completion
+	 */
+	int (*end_io)(struct io_u *);
 };
 
 /*
@@ -544,11 +549,6 @@
 	struct timeval time;
 };
 
-/*
- * Callback for io completion
- */
-typedef int (endio_handler)(struct io_u *);
-
 #define DISK_UTIL_MSEC	(250)
 
 #ifndef min
@@ -663,8 +663,8 @@
 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 *);