For the grand introduction to this feature, see my original posting here: https://lore.kernel.org/linux-block/20181117235317.7366-1-axboe@xxxxxxxxx/ and refer to the previous postings of this patchset for whatever features were added there. Particularly v4 has some performance results: https://lore.kernel.org/linux-block/20181130165646.27341-1-axboe@xxxxxxxxx/ See changelog for other changes, but this specifically adds support for kernel side backing for the SQ/CQ ring interface. There are two modes: 1) IOCTX_FLAG_SQTHREAD. This adds a single thread backing. Right now this needs to be woken up through io_ring_enter(2), but I'm also planning a polled mode where an application can submit IO without ever entering the kernel. 2) IOCTX_FLAG_SQWQ. Like SQTHREAD, this adds a kernel side backing for IO submission. This one uses a workqueue, so we can have higher levels of concurrency. The main use case here is buffered AIO. With this, we can support buffered aio with QD > 1. For cached data, we avoid doing a workqueue punt for reads. So those should return without any extra context switches. Find it here for your cgit browsing: http://git.kernel.dk/cgit/linux-block/log/?h=aio-poll or clone/pull from this branch: git://git.kernel.dk/linux-block aio-poll Since v6: - Add support for async buffered IO, through kthread/workqueue backing - Rename aio_kiocb flags - Comment new syscalls - Bug fixes Documentation/filesystems/vfs.txt | 3 + Documentation/sysctl/fs.txt | 8 +- arch/x86/entry/syscalls/syscall_64.tbl | 2 + block/bio.c | 33 +- fs/aio.c | 1914 ++++++++++++++++++++++-- fs/block_dev.c | 34 +- fs/file.c | 15 +- fs/file_table.c | 10 +- fs/gfs2/file.c | 2 + fs/iomap.c | 57 +- fs/xfs/xfs_file.c | 1 + include/linux/bio.h | 1 + include/linux/blk_types.h | 2 + include/linux/file.h | 2 + include/linux/fs.h | 5 +- include/linux/iomap.h | 1 + include/linux/syscalls.h | 5 + include/uapi/asm-generic/unistd.h | 4 +- include/uapi/linux/aio_abi.h | 35 + kernel/sys_ni.c | 2 + 20 files changed, 1939 insertions(+), 197 deletions(-) -- Jens Axboe