X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=fio.h;h=9490edc11e1a2ea924f1dea3bf75f2d9e36d0fdf;hb=e9459e5a14b577ead39d666c051c7ce4db12bc75;hp=ec08e42350f47b5428e8f166205b1fc680d7155f;hpb=8de8f047bd025f12d23cfc3fc1793434c6d8ff94;p=fio.git diff --git a/fio.h b/fio.h index ec08e423..9490edc1 100644 --- a/fio.h +++ b/fio.h @@ -13,12 +13,13 @@ #include #include +#include "compiler/compiler.h" #include "list.h" #include "rbtree.h" #include "md5.h" #include "crc32.h" -#include "arch.h" -#include "os.h" +#include "arch/arch.h" +#include "os/os.h" #include "mutex.h" #ifdef FIO_HAVE_SYSLET @@ -134,6 +135,7 @@ struct io_u { void *buf; unsigned long buflen; unsigned long long offset; + unsigned long long endpos; /* * IO engine state, may be different from above when we get @@ -223,6 +225,7 @@ enum fio_filetype { FIO_TYPE_FILE = 1, /* plain file */ FIO_TYPE_BD, /* block device */ FIO_TYPE_CHAR, /* character device */ + FIO_TYPE_PIPE, /* pipe */ }; enum fio_ioengine_flags { @@ -237,7 +240,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 +261,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; @@ -317,6 +333,7 @@ struct thread_stat { 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[2]; + unsigned long short_io_u[2]; unsigned long long io_bytes[2]; unsigned long runtime[2]; @@ -356,6 +373,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; @@ -394,6 +412,7 @@ struct thread_options { unsigned int file_service_type; unsigned int group_reporting; unsigned int fadvise_hint; + unsigned int zero_buffers; char *read_iolog_file; char *write_iolog_file; @@ -434,6 +453,7 @@ struct thread_data { struct fio_file *files; unsigned int files_index; unsigned int nr_open_files; + unsigned int nr_done_files; unsigned int nr_normal_files; union { unsigned int next_file; @@ -485,7 +505,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]; @@ -632,8 +651,9 @@ struct disk_util { struct list_head list; char *name; + char *sysfs_root; char path[256]; - dev_t dev; + int major, minor; struct disk_util_stat dus; struct disk_util_stat last_dus; @@ -731,6 +751,21 @@ extern void dup_files(struct thread_data *, struct thread_data *); extern void print_thread_status(void); extern void print_status_init(int); +/* + * disk util stuff + */ +#ifdef FIO_HAVE_DISK_UTIL +extern void show_disk_util(void); +extern void disk_util_timer_arm(void); +extern void init_disk_util(struct thread_data *); +extern void update_io_ticks(void); +#else +#define show_disk_util() +#define disk_util_timer_arm() +#define init_disk_util(td) +#define update_io_ticks() +#endif + /* * Thread life cycle. Once a thread has a runstate beyond TD_INITIALIZED, it * will never back again. It may cycle between running/verififying/fsyncing. @@ -825,7 +860,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 *); @@ -854,4 +889,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