On 12/1/22 17:07, Alberto Faria wrote:
The libblkio library provides a unified API for efficiently accessing block devices using modern high-performance block I/O interfaces like io_uring and vhost-user-blk. Using libblkio reduces the amount of code needed for interfacing with storage devices and allows developers to focus on their applcations. Add a libblkio engine that uses libblkio to perform I/O. This is useful to benchmark the library itself, and also adds support for storage interfaces and devices otherwise not supported by fio, such as virtio-blk PCI, vhost-user, and vhost-vDPA devices. See the libblkio documentation [2] or KVM Forum 2022 [3] presentation for more information on the library itself. [1] https://gitlab.com/libblkio/libblkio [2] https://libblkio.gitlab.io/libblkio/index.html [3] https://static.sched.com/hosted_files/kvmforum2022/8c/libblkio-kvm-forum-2022.pdf v2: - In the HOWTO and manpage, point users to the libblkio docs to know what drivers and properties are available. - Avoid mentioning libblkio API symbols in the HOWTO and manpage. - Don't document FIO_OPT_STR_SET options as having type bool in the HOWTO and manpage. - Prevent null deref in fio_blkio_init() error path. - Fix total_threaded_subjobs() to only count jobs using the libblkio engine. - Force `td->o.disable_slat = 1`, as request enqueueing is fast and it is not possible to know exactly when a request is submitted. - Have all type declarations near the top of the file. - Be more economical with blank lines. Alberto Faria (10): Add a libblkio engine Add engine flag FIO_SKIPPABLE_IOMEM_ALLOC engines/libblkio: Allow setting option mem/iomem engines/libblkio: Add support for poll queues engines/libblkio: Add option libblkio_vectored engines/libblkio: Add option libblkio_write_zeroes_on_trim engines/libblkio: Add option libblkio_wait_mode engines/libblkio: Add option libblkio_force_enable_completion_eventfd engines/libblkio: Add options for some driver-specific properties engines/libblkio: Share a single blkio instance among threads in same process HOWTO.rst | 95 +++ Makefile | 6 + configure | 25 + engines/libblkio.c | 914 ++++++++++++++++++++++ examples/libblkio-io_uring.fio | 29 + examples/libblkio-virtio-blk-vfio-pci.fio | 29 + fio.1 | 78 ++ ioengines.h | 2 + memory.c | 22 +- optgroup.h | 2 + 10 files changed, 1192 insertions(+), 10 deletions(-) create mode 100644 engines/libblkio.c create mode 100644 examples/libblkio-io_uring.fio create mode 100644 examples/libblkio-virtio-blk-vfio-pci.fio
Applied. Thanks.