projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Cleanup end IO handling
[fio.git]
/
fio.h
diff --git
a/fio.h
b/fio.h
index 2d30324cb973df5dc9c21f520f46e9ce5faee08c..aa66ecd4e06bce3dbe7591c8fad859e05f7571b9 100644
(file)
--- a/
fio.h
+++ b/
fio.h
@@
-18,7
+18,9
@@
#include "arch.h"
#include "os.h"
#include "arch.h"
#include "os.h"
+#ifdef FIO_HAVE_SYSLET
#include "syslet.h"
#include "syslet.h"
+#endif
enum fio_ddir {
DDIR_READ = 0,
enum fio_ddir {
DDIR_READ = 0,
@@
-127,6
+129,14
@@
struct io_u {
struct list_head list;
};
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 {
#define FIO_HDR_MAGIC 0xf00baaef
enum {
@@
-194,7
+204,7
@@
struct fio_file {
*/
union {
unsigned long file_data;
*/
union {
unsigned long file_data;
-
long
fd;
+
int
fd;
};
char *file_name;
void *mmap;
};
char *file_name;
void *mmap;
@@
-218,6
+228,7
@@
struct fio_file {
* How many depth levels to log
*/
#define FIO_IO_U_MAP_NR 8
* How many depth levels to log
*/
#define FIO_IO_U_MAP_NR 8
+#define FIO_IO_U_LAT_NR 12
/*
* This describes a single thread/process executing a fio job.
/*
* This describes a single thread/process executing a fio job.
@@
-271,6
+282,7
@@
struct thread_data {
unsigned int hugepage_size;
unsigned int rw_min_bs;
unsigned int thinktime;
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;
unsigned int thinktime_blocks;
unsigned int fsync_blocks;
unsigned int start_delay;
@@
-318,6
+330,7
@@
struct thread_data {
*/
unsigned int cur_depth;
unsigned int io_u_map[FIO_IO_U_MAP_NR];
*/
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;
unsigned long total_io_u;
struct list_head io_u_freelist;
struct list_head io_u_busylist;
@@
-479,15
+492,9
@@
struct disk_util {
};
/*
};
/*
- *
Used for passing io_u completion data
+ *
Callback for io completion
*/
*/
-struct io_completion_data {
- int nr; /* input */
-
- int error; /* output */
- unsigned long bytes_done[2]; /* output */
- struct timeval time; /* output */
-};
+typedef int (endio_handler)(struct io_u *);
#define DISK_UTIL_MSEC (250)
#define DISK_UTIL_MSEC (250)
@@
-584,7
+591,7
@@
enum {
*/
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 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
/*
* Memory helpers
@@
-601,8
+608,8
@@
extern void free_io_mem(struct thread_data *);
extern struct io_u *__get_io_u(struct thread_data *);
extern struct io_u *get_io_u(struct thread_data *, struct fio_file *);
extern void put_io_u(struct thread_data *, struct io_u *);
extern struct io_u *__get_io_u(struct thread_data *);
extern struct io_u *get_io_u(struct thread_data *, struct fio_file *);
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
long io_u_sync_complete(struct thread_data *, struct io_u *, endio_handler
*);
+extern
long io_u_queued_complete(struct thread_data *, int, endio_handler
*);
/*
* io engine entry points
/*
* io engine entry points
@@
-661,9
+668,10
@@
struct ioengine_ops {
void (*cleanup)(struct thread_data *);
void *data;
void *dlhandle;
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 *);
extern struct ioengine_ops *load_ioengine(struct thread_data *, const char *);
extern int register_ioengine(struct ioengine_ops *);