X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;ds=sidebyside;f=fio.h;h=d3a03795c9ecec7e1764f9b33408ac4f88e8fa42;hb=4f5af7b2370a6d3e64bc5128905c1aa8b0dc51b0;hp=932ee83f4b7b6047f1c15cfd2ad9a3c55a0ee3ce;hpb=c97bd0fa0f68d924f4e6f3c480f380c4ca20b872;p=fio.git diff --git a/fio.h b/fio.h index 932ee83f..d3a03795 100644 --- a/fio.h +++ b/fio.h @@ -24,6 +24,8 @@ #include "mutex.h" #include "log.h" #include "debug.h" +#include "file.h" +#include "io_ddir.h" #ifdef FIO_HAVE_GUASI #include @@ -33,29 +35,6 @@ #include #endif -enum fio_ddir { - DDIR_READ = 0, - DDIR_WRITE, - DDIR_SYNC, - DDIR_INVAL = -1, -}; - -enum td_ddir { - TD_DDIR_READ = 1 << 0, - TD_DDIR_WRITE = 1 << 1, - TD_DDIR_RAND = 1 << 2, - TD_DDIR_RW = TD_DDIR_READ | TD_DDIR_WRITE, - TD_DDIR_RANDREAD = TD_DDIR_READ | TD_DDIR_RAND, - TD_DDIR_RANDWRITE = TD_DDIR_WRITE | TD_DDIR_RAND, - TD_DDIR_RANDRW = TD_DDIR_RW | TD_DDIR_RAND, -}; - -enum file_lock_mode { - FILE_LOCK_NONE, - FILE_LOCK_EXCLUSIVE, - FILE_LOCK_READWRITE, -}; - /* * Use for maintaining statistics */ @@ -135,6 +114,7 @@ struct io_u { #ifdef FIO_HAVE_SOLARISAIO aio_result_t resultp; #endif + void *mmap_data; }; struct timeval start_time; struct timeval issue_time; @@ -145,7 +125,6 @@ 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 @@ -189,63 +168,6 @@ enum { FIO_Q_BUSY = 2, /* no more room, call ->commit() */ }; -#define FIO_HDR_MAGIC 0xf00baaef - -enum { - VERIFY_NONE = 0, /* no verification */ - 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_CRC32C_INTEL, /* crc32c sum data blocks with hw */ - VERIFY_CRC16, /* crc16 sum data blocks */ - VERIFY_CRC7, /* crc7 sum data blocks */ - VERIFY_SHA256, /* sha256 sum data blocks */ - VERIFY_SHA512, /* sha512 sum data blocks */ - VERIFY_META, /* block_num, timestamp etc. */ - VERIFY_NULL, /* pretend to verify */ -}; - -/* - * A header structure associated with each checksummed data block. It is - * followed by a checksum specific header that contains the verification - * data. - */ -struct verify_header { - unsigned int fio_magic; - unsigned int len; - unsigned int verify_type; -}; - -struct vhdr_md5 { - uint32_t md5_digest[16]; -}; -struct vhdr_sha512 { - uint8_t sha512[128]; -}; -struct vhdr_sha256 { - uint8_t sha256[128]; -}; -struct vhdr_crc64 { - uint64_t crc64; -}; -struct vhdr_crc32 { - uint32_t crc32; -}; -struct vhdr_crc16 { - uint16_t crc16; -}; -struct vhdr_crc7 { - uint8_t crc7; -}; -struct vhdr_meta { - uint64_t offset; - unsigned char thread; - unsigned short numberio; - unsigned long time_sec; - unsigned long time_usec; -}; - struct group_run_stats { unsigned long long max_run[2], min_run[2]; unsigned long long max_bw[2], min_bw[2]; @@ -264,16 +186,6 @@ enum fio_memtype { MEM_MMAPHUGE, /* memory mapped huge file */ }; -/* - * The type of object we are working on - */ -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 { FIO_SYNCIO = 1 << 0, /* io engine has synchronous ->queue */ FIO_RAWIO = 1 << 1, /* some sort of direct/raw io */ @@ -285,68 +197,6 @@ enum fio_ioengine_flags { FIO_SIGQUIT = 1 << 7, /* needs SIGQUIT to exit */ }; -enum fio_file_flags { - FIO_FILE_OPEN = 1 << 0, /* file is open */ - FIO_FILE_CLOSING = 1 << 1, /* file being closed */ - FIO_FILE_EXTEND = 1 << 2, /* needs extend */ - FIO_FILE_DONE = 1 << 3, /* io completed to this file */ - FIO_SIZE_KNOWN = 1 << 4, /* size has been set */ - FIO_FILE_HASHED = 1 << 5, /* file is on hash */ -}; - -/* - * Each thread_data structure has a number of files associated with it, - * this structure holds state information for a single file. - */ -struct fio_file { - struct flist_head hash_list; - enum fio_filetype filetype; - - /* - * A file may not be a file descriptor, let the io engine decide - */ - union { - unsigned long file_data; - int fd; - }; - - /* - * filename and possible memory mapping - */ - char *file_name; - void *mmap; - unsigned int major, minor; - - /* - * 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; - - /* - * if io is protected by a semaphore, this is set - */ - struct fio_mutex *lock; - void *lock_owner; - unsigned int lock_batch; - enum fio_ddir lock_ddir; - - /* - * block map for random io - */ - unsigned int *file_map; - unsigned int num_maps; - unsigned int last_free_lookup; - - int references; - enum fio_file_flags flags; - - struct disk_util *du; -}; - /* * How many depth levels to log */ @@ -951,13 +801,6 @@ enum { extern void td_set_runstate(struct thread_data *, int); -/* - * Verify helpers - */ -extern void populate_verify_io_u(struct thread_data *, struct io_u *); -extern int __must_check get_next_verify(struct thread_data *td, struct io_u *); -extern int __must_check verify_io_u(struct thread_data *, struct io_u *); - /* * Memory helpers */