loop: use aio to perform io on the underlying file
This uses the new kernel aio interface to process loopback IO by
submitting concurrent direct aio. Previously loop's IO was serialized
by synchronous processing in a thread.
The aio operations specify the memory for the IO with the bio_vec arrays
directly instead of mappings of the pages.
The use of aio operations is enabled when the backing file supports the
read_iter and write_iter methods. These methods must only be added when
O_DIRECT on bio_vecs is supported.
Signed-off-by: Zach Brown <zach.brown@oracle.com>
(cherry picked from commit fc98f542e271139bac671ffe2ed7aba6a11bd264)
2 files changed