X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=fio.h;h=92e6a88d66881378eb4d6d407e158775fa11e097;hp=4d7e6ea7d8410132e787e577631c44a24b1b440d;hb=4fee8096bff598ab565ac1d258d584d584433341;hpb=36690c9b5b50736cec1fcd53100f01fd1181fdf4 diff --git a/fio.h b/fio.h index 4d7e6ea7..92e6a88d 100644 --- a/fio.h +++ b/fio.h @@ -13,6 +13,7 @@ #include #include +#include "compiler.h" #include "list.h" #include "rbtree.h" #include "md5.h" @@ -237,7 +238,11 @@ enum fio_file_flags { FIO_FILE_OPEN = 1 << 0, /* file is open */ FIO_FILE_UNLINK = 1 << 1, /* unlink on close */ FIO_FILE_CLOSING = 1 << 2, /* file being closed */ - FIO_FILE_EXISTS = 1 << 3, /* no need to create */ + FIO_FILE_EXISTS = 1 << 3, /* file there */ + FIO_FILE_EXTEND = 1 << 4, /* needs extend */ + FIO_FILE_NOSORT = 1 << 5, /* don't sort verify blocks */ + FIO_FILE_DONE = 1 << 6, /* io completed to this file */ + FIO_SIZE_KNOWN = 1 << 7, /* size has been set */ }; /* @@ -254,11 +259,20 @@ struct fio_file { unsigned long file_data; int fd; }; + + /* + * filename and possible memory mapping + */ char *file_name; void *mmap; - unsigned long long file_size; + + /* + * size of the file, offset into file, and io size from that offset + */ unsigned long long real_file_size; unsigned long long file_offset; + unsigned long long io_size; + unsigned long long last_pos; unsigned long long last_completed_pos; @@ -356,6 +370,7 @@ struct thread_options { unsigned int end_fsync; unsigned int sync_io; unsigned int verify; + unsigned int verifysort; unsigned int use_thread; unsigned int unlink; unsigned int do_disk_util; @@ -485,7 +500,6 @@ struct thread_data { unsigned long rate_blocks; struct timeval lastrate; - unsigned long long io_size; unsigned long long total_io_size; unsigned long io_issues[2]; @@ -515,9 +529,15 @@ struct thread_data { unsigned int ddir_nr; /* - * IO historic logs + * IO history logs for verification. We use a tree for sorting, + * if we are overwriting. Otherwise just use a fifo. */ struct rb_root io_hist_tree; + struct list_head io_hist_list; + + /* + * For IO replaying + */ struct list_head io_log_list; /* @@ -819,7 +839,7 @@ struct ioengine_ops { void *dlhandle; }; -#define FIO_IOOPS_VERSION 6 +#define FIO_IOOPS_VERSION 7 extern struct ioengine_ops *load_ioengine(struct thread_data *, const char *); extern void register_ioengine(struct ioengine_ops *); @@ -848,4 +868,10 @@ extern void close_ioengine(struct thread_data *); } \ } while (0) +static inline void clear_error(struct thread_data *td) +{ + td->error = 0; + td->verror[0] = '\0'; +} + #endif