Here's v7 of the io_uring interface. Not a lot of changes this time around, mostly corner cases and error handling that hadn't been exercised yet. Only new "feature" is an improvement in sequential buffered IO performance. This is done by piggy backing on to existing async work if we're sequential to the previous work item, and it hasn't finished yet. This greatly reduces the overhead, context switches, and increases the performance a lot. Using io_uring-cp, as test program that does cp with io_uring, I saw a 5x improvement in speed when copying a large file. It's now faster than plan 'cp. The x86/x86-64 system calls were renumbered, so if you are testing, be sure to pull apply the renumbering. The fio and liburing repos have been updated. The liburing git repo now has a man page for io_uring_register(2), thanks to Jeff Moyer. Outside of that, not much activity there since last time. Clone the liburing repo here: git://git.kernel.dk/liburing Patches are against 5.0-rc3, and can also be found in my io_uring branch here: git://git.kernel.dk/linux-block io_uring Changes since v6: - Fix leak of iovec in write path for larger writes - Fix CQ event filling for error handling of workqueue buffered items - Improve sequential buffered IO performance - Fix leak of accounted mem in error path for io_uring_create() (Roman) - Rebase on v5.0-rc3 - Check for entries == 0 in io_uring_create (Jeff) - Renumber system calls so they are ready for Arnds unification Documentation/filesystems/vfs.txt | 3 + arch/x86/entry/syscalls/syscall_32.tbl | 3 + arch/x86/entry/syscalls/syscall_64.tbl | 3 + block/bio.c | 59 +- fs/Makefile | 1 + fs/block_dev.c | 19 +- fs/file.c | 15 +- fs/file_table.c | 9 +- fs/gfs2/file.c | 2 + fs/io_uring.c | 2540 ++++++++++++++++++++++++ fs/iomap.c | 48 +- fs/xfs/xfs_file.c | 1 + include/linux/bio.h | 14 + include/linux/blk_types.h | 1 + include/linux/file.h | 2 + include/linux/fs.h | 6 +- include/linux/iomap.h | 1 + include/linux/sched/user.h | 2 +- include/linux/syscalls.h | 7 + include/uapi/asm-generic/unistd.h | 8 +- include/uapi/linux/io_uring.h | 141 ++ init/Kconfig | 9 + kernel/sys_ni.c | 4 + 23 files changed, 2857 insertions(+), 41 deletions(-) -- Jens Axboe