X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;ds=sidebyside;f=file.h;h=e3864ee505971ed3733efbf055887df92f94e8af;hb=f7c9bfd57232c6e11623d741be340d32f796c726;hp=c403b176827740f10afbc9dd6391b78c928b681d;hpb=bf651609cda6c8968edb49d80efe7ee007983f61;p=fio.git diff --git a/file.h b/file.h index c403b176..e3864ee5 100644 --- a/file.h +++ b/file.h @@ -63,6 +63,7 @@ enum fio_fallocate_mode { FIO_FALLOCATE_NONE = 1, FIO_FALLOCATE_POSIX = 2, FIO_FALLOCATE_KEEP_SIZE = 3, + FIO_FALLOCATE_NATIVE = 4, }; /* @@ -113,9 +114,12 @@ struct fio_file { unsigned int last_write_idx; /* - * For use by the io engine + * For use by the io engine for offset or private data storage */ - uint64_t engine_data; + union { + uint64_t engine_pos; + void *engine_data; + }; /* * if io is protected by a semaphore, this is set @@ -147,9 +151,8 @@ struct fio_file { struct disk_util *du; }; -#define FILE_ENG_DATA(f) ((void *) (uintptr_t) (f)->engine_data) -#define FILE_SET_ENG_DATA(f, data) \ - ((f)->engine_data = (uintptr_t) (data)) +#define FILE_ENG_DATA(f) ((f)->engine_data) +#define FILE_SET_ENG_DATA(f, data) ((f)->engine_data = (data)) #define FILE_FLAG_FNS(name) \ static inline void fio_file_set_##name(struct fio_file *f) \ @@ -185,9 +188,15 @@ extern void close_and_free_files(struct thread_data *); extern uint64_t get_start_offset(struct thread_data *, struct fio_file *); extern int __must_check setup_files(struct thread_data *); extern int __must_check file_invalidate_cache(struct thread_data *, struct fio_file *); +#ifdef __cplusplus +extern "C" { +#endif 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 *); +#ifdef __cplusplus +} +#endif extern int __must_check file_lookup_open(struct fio_file *f, int flags); extern int __must_check pre_read_files(struct thread_data *); extern unsigned long long get_rand_file_size(struct thread_data *td); @@ -208,5 +217,6 @@ extern void filesetup_mem_free(void); 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 *); #endif