- * 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];
- unsigned long long io_kb[2];
- unsigned long long agg[2];
-};
-
-/*
- * What type of allocation to use for io buffers
- */
-enum fio_memtype {
- MEM_MALLOC = 0, /* ordinary malloc */
- MEM_SHM, /* use shared memory segments */
- MEM_SHMHUGE, /* use shared memory segments with huge pages */
- MEM_MMAP, /* use anonynomous mmap */
- 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 */
- FIO_DISKLESSIO = 1 << 2, /* no disk involved */
- FIO_NOEXTEND = 1 << 3, /* engine can't extend file */
- FIO_NODISKUTIL = 1 << 4, /* diskutil can't handle filename */
- FIO_UNIDIR = 1 << 5, /* engine is uni-directional */
- FIO_NOIO = 1 << 6, /* thread does only pseudo IO */
- 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;
-};
-
-/*
- * How many depth levels to log