struct list_head list;
};
+/*
+ * io_ops->queue() return values
+ */
+enum {
+ FIO_Q_COMPLETED = 0, /* completed sync */
+ FIO_Q_QUEUED = 1, /* queued, will complete async */
+};
+
#define FIO_HDR_MAGIC 0xf00baaef
enum {
*/
union {
unsigned long file_data;
- long fd;
+ int fd;
};
char *file_name;
void *mmap;
unsigned int hugepage_size;
unsigned int rw_min_bs;
unsigned int thinktime;
+ unsigned int thinktime_spin;
unsigned int thinktime_blocks;
unsigned int fsync_blocks;
unsigned int start_delay;
/*
* Used for passing io_u completion data
*/
+typedef int (icd_handler)(struct io_u *);
struct io_completion_data {
int nr; /* input */
+ icd_handler *handler; /* input */
int error; /* output */
unsigned long bytes_done[2]; /* output */
*/
extern void populate_verify_io_u(struct thread_data *, struct io_u *);
extern int get_next_verify(struct thread_data *td, struct io_u *);
-extern int do_io_u_verify(struct thread_data *, struct io_u **);
+extern int verify_io_u(struct io_u *);
/*
* Memory helpers
extern void put_io_u(struct thread_data *, struct io_u *);
extern void ios_completed(struct thread_data *, struct io_completion_data *);
extern void io_completed(struct thread_data *, struct io_u *, struct io_completion_data *);
+extern void init_icd(struct io_completion_data *, icd_handler *, int);
/*
* io engine entry points
void (*cleanup)(struct thread_data *);
void *data;
void *dlhandle;
+ unsigned long priv;
};
-#define FIO_IOOPS_VERSION 3
+#define FIO_IOOPS_VERSION 4
extern struct ioengine_ops *load_ioengine(struct thread_data *, const char *);
extern int register_ioengine(struct ioengine_ops *);