#include <assert.h>
#include "compiler/compiler.h"
-#include "list.h"
+#include "flist.h"
#include "fifo.h"
#include "rbtree.h"
#include "arch/arch.h"
#include <guasi.h>
#endif
+#ifdef FIO_HAVE_SOLARISAIO
+#include <sys/asynch.h>
+#endif
+
enum fio_ddir {
DDIR_READ = 0,
DDIR_WRITE,
struct io_piece {
union {
struct rb_node rb_node;
- struct list_head list;
+ struct flist_head list;
};
union {
int fileno;
#endif
#ifdef FIO_HAVE_GUASI
guasi_req_t greq;
+#endif
+#ifdef FIO_HAVE_SOLARISAIO
+ aio_result_t resultp;
#endif
};
struct timeval start_time;
union {
unsigned int index;
unsigned int seen;
+ void *engine_data;
};
unsigned int flags;
struct fio_file *file;
- struct list_head list;
+ struct flist_head list;
/*
* Callback for io completion
VERIFY_MD5, /* md5 sum data blocks */
VERIFY_CRC64, /* crc64 sum data blocks */
VERIFY_CRC32, /* crc32 sum data blocks */
+ VERIFY_CRC32C, /* crc32c sum data blocks */
VERIFY_CRC16, /* crc16 sum data blocks */
VERIFY_CRC7, /* crc7 sum data blocks */
VERIFY_SHA256, /* sha256 sum data blocks */
* this structure holds state information for a single file.
*/
struct fio_file {
- struct list_head hash_list;
+ struct flist_head hash_list;
enum fio_filetype filetype;
/*
unsigned int iodepth;
unsigned int iodepth_low;
unsigned int iodepth_batch;
+ unsigned int iodepth_batch_complete;
unsigned long long size;
unsigned int fill_device;
*/
unsigned int cur_depth;
unsigned int io_u_queued;
- struct list_head io_u_freelist;
- struct list_head io_u_busylist;
- struct list_head io_u_requeues;
+ struct flist_head io_u_freelist;
+ struct flist_head io_u_busylist;
+ struct flist_head io_u_requeues;
/*
* Rate state
* if we are overwriting. Otherwise just use a fifo.
*/
struct rb_root io_hist_tree;
- struct list_head io_hist_list;
+ struct flist_head io_hist_list;
/*
* For IO replaying
*/
- struct list_head io_log_list;
+ struct flist_head io_log_list;
/*
* timeout handling
* Per-device disk util management
*/
struct disk_util {
- struct list_head list;
+ struct flist_head list;
char *name;
char *sysfs_root;
* Init/option functions
*/
extern int __must_check parse_options(int, char **);
-extern int fio_option_parse(struct thread_data *, const char *);
+extern int fio_options_parse(struct thread_data *, char **, int);
extern int fio_cmd_option_parse(struct thread_data *, const char *, char *);
extern void fio_fill_default_options(struct thread_data *);
extern int fio_show_option_help(const char *);
/*
* io unit handling
*/
-#define queue_full(td) list_empty(&(td)->io_u_freelist)
+#define queue_full(td) flist_empty(&(td)->io_u_freelist)
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 *);
#endif
struct ioengine_ops {
- struct list_head list;
+ struct flist_head list;
char name[16];
int version;
int flags;