X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;ds=sidebyside;f=file.h;h=e50c0f9c3fac752455bfbe74701fd86b04b844ad;hb=refs%2Fheads%2Fmaster;hp=446a1fbeb967cf614547b40272c1cec1d4e19058;hpb=bfbdd35b3e8f7de1bf1f48e7087c04a6b37e9c61;p=fio.git diff --git a/file.h b/file.h index 446a1fbe..e38ed2f1 100644 --- a/file.h +++ b/file.h @@ -12,6 +12,7 @@ /* Forward declarations */ struct zoned_block_device_info; +struct fdp_ruh_info; /* * The type of object we are working on @@ -33,6 +34,7 @@ enum fio_file_flags { FIO_FILE_partial_mmap = 1 << 6, /* can't do full mmap */ FIO_FILE_axmap = 1 << 7, /* uses axmap */ FIO_FILE_lfsr = 1 << 8, /* lfsr is used */ + FIO_FILE_smalloc = 1 << 9, /* smalloc file/file_name */ }; enum file_lock_mode { @@ -67,6 +69,7 @@ enum fio_fallocate_mode { FIO_FALLOCATE_POSIX = 2, FIO_FALLOCATE_KEEP_SIZE = 3, FIO_FALLOCATE_NATIVE = 4, + FIO_FALLOCATE_TRUNCATE = 5, }; /* @@ -89,7 +92,6 @@ struct fio_file { */ unsigned int major, minor; int fileno; - unsigned long long bs; char *file_name; /* @@ -100,10 +102,16 @@ struct fio_file { uint64_t file_offset; uint64_t io_size; + struct fio_ruhs_info *ruhs_info; + struct fio_ruhs_scheme *ruhs_scheme; + /* * Zoned block device information. See also zonemode=zbd. */ struct zoned_block_device_info *zbd_info; + /* zonemode=zbd working area */ + uint32_t min_zone; /* inclusive */ + uint32_t max_zone; /* exclusive */ /* * Track last end and last start of IO for a given data direction @@ -122,12 +130,14 @@ struct fio_file { unsigned int last_write_idx; /* - * For use by the io engine for offset or private data storage + * For use by the io engine to store offset */ - union { - uint64_t engine_pos; - void *engine_data; - }; + uint64_t engine_pos; + + /* + * For use by the io engine for private data storage + */ + void *engine_data; /* * if io is protected by a semaphore, this is set @@ -185,6 +195,7 @@ FILE_FLAG_FNS(hashed); FILE_FLAG_FNS(partial_mmap); FILE_FLAG_FNS(axmap); FILE_FLAG_FNS(lfsr); +FILE_FLAG_FNS(smalloc); #undef FILE_FLAG_FNS /* @@ -202,6 +213,7 @@ extern "C" { extern int __must_check generic_open_file(struct thread_data *, struct fio_file *); extern int __must_check generic_close_file(struct thread_data *, struct fio_file *); extern int __must_check generic_get_file_size(struct thread_data *, struct fio_file *); +extern int __must_check generic_prepopulate_file(struct thread_data *, struct fio_file *); #ifdef __cplusplus } #endif @@ -226,5 +238,6 @@ extern void fio_file_reset(struct thread_data *, struct fio_file *); extern bool fio_files_done(struct thread_data *); extern bool exists_and_not_regfile(const char *); extern int fio_set_directio(struct thread_data *, struct fio_file *); +extern void fio_file_free(struct fio_file *); #endif