X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=fio.h;h=870b6704a7852a938d47830e85f5753165d45de1;hp=5ca72c59d5c707b80a326df4011b012b31e688be;hb=8c1fdf044083522504685e3009e356c70d003ef0;hpb=059e63c02b947085d28ec7c6450b51d5fb2e8d05 diff --git a/fio.h b/fio.h index 5ca72c59..870b6704 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 @@ -87,6 +88,7 @@ struct io_piece { unsigned long long offset; unsigned long len; enum fio_ddir ddir; + unsigned long delay; }; #ifdef FIO_HAVE_SYSLET @@ -134,6 +136,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 +226,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 { @@ -235,12 +239,12 @@ enum fio_ioengine_flags { 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, /* 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_FILE_CLOSING = 1 << 1, /* file being closed */ + FIO_FILE_EXISTS = 1 << 2, /* file there */ + FIO_FILE_EXTEND = 1 << 3, /* needs extend */ + FIO_FILE_NOSORT = 1 << 4, /* don't sort verify blocks */ + FIO_FILE_DONE = 1 << 5, /* io completed to this file */ + FIO_SIZE_KNOWN = 1 << 6, /* size has been set */ }; /* @@ -329,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]; @@ -400,13 +405,14 @@ struct thread_options { unsigned int numjobs; os_cpu_mask_t cpumask; unsigned int iolog; - unsigned int read_iolog; unsigned int rwmixcycle; unsigned int rwmix[2]; unsigned int nice; unsigned int file_service_type; unsigned int group_reporting; unsigned int fadvise_hint; + unsigned int zero_buffers; + unsigned int time_based; char *read_iolog_file; char *write_iolog_file; @@ -447,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; @@ -644,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; @@ -743,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. @@ -803,6 +826,12 @@ extern int __must_check td_io_commit(struct thread_data *); extern int __must_check td_io_open_file(struct thread_data *, struct fio_file *); extern void td_io_close_file(struct thread_data *, struct fio_file *); +/* + * blktrace support + */ +extern int is_blktrace(const char *); +extern int load_blktrace(struct thread_data *, const char *); + /* * If logging output to a file, stderr should go to both stderr and f_err */