configure: new --dynamic-libengines build option When enabled, some of the more dependency-heavy internal engines are converted to "plugin" engines, i.e. they are built into separate object files and are loaded by fio on demand. This helps downstream distros package these engines separately and not force a long list of package dependencies from the base fio package. Signed-off-by: Yigal Korman <ykorman@gmail.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
Introduce enum fio_q_status Introduce a new enumeration type fio_q_status. This patch does not change any functionality but makes it clear which variables and return values represent a queuing status value. Bump FIO_IOOPS_VERSION because this patch changes the I/O engine API. Signed-off-by: Bart Van Assche <bart.vanassche@wdc.com>
nanosecond: initial commit changing timeval to timespec struct timeval has usec resolution whereas struct timespec has nsec resolution. This commit changes several dozen instances of struct timeval to struct timespec. All of the output is unchanged. The ticks to nsec conversion in this patch is broken but fixed in a later patch.
Don't malloc/memcpy ioengine_ops on td initialization The only reason load_ioengine() needs to malloc extra space for struct ioengine_ops and memcpy from the original ops is because td has per-thread/process ioengine private data which is a part of this structure. If data (and dlhandle) are separated from struct ioengine_ops, load_ioengine() no longer needs to malloc, as the rest of structure fields such as function pointers and string literal are static. Td only needs a pointer to the original ops. Also avoid memcpying a list_head from the original ops. This commit moves/renames data and dlhandle to struct thread_data as thread_data::io_ops_data and thread_data::io_ops_dlhandle. engines/*.c which access ioengine private data by dereferencing td->io_ops->... are modified accordingly, but nothing more than that. Signed-off-by: Tomohiro Kusumi <kusumi.tomohiro@gmail.com> Signed-off-by: Jens Axboe <axboe@fb.com>
Avoid opening files until they are used Fio still opens and creates all files, just to check the size of them. Add a specialized IO engine op for getting the size of a file and use that instead. This also cleans a lot of things up. Note that the IO engine version is now bumped to 10, meaning that external engines will have to separate the file open from the size checking. Signed-off-by: Jens Axboe <jens.axboe@oracle.com>