This series adds support for applications doing async accept() through io_uring. Patches 1+2 are just a prep patches, adding support for inheriting a process file table for commands. Patch 3 abstracts out __sys_accept4_file(), which is the same as __sys_accept4(), except it takes a struct file and extra file flags. Should not have any functional changes. And finally patch 4 adds support for IORING_OP_ACCEPT. sqe->fd is the file descriptor, sqe->addr holds a pointer to struct sockaddr, sqe->addr2 holds a pointer to socklen_t, and finally sqe->accept_flags holds the flags for accept(4). The series is against my for-5.5/io_uring-wq tree, and also exists as a for-5.5/io_uring-test branch. liburing has a basic test case for this (test/accept.c). Changes since v1: - Respin on top of for-5.5/io_uring-wq branch, as io-wq is needed to support cancellation of requests. - Rework files_struct inheritance to avoid cyclic dependencies. Thanks to Jann Horn for some great suggestions there. fs/io-wq.c | 14 +++ fs/io-wq.h | 3 + fs/io_uring.c | 157 ++++++++++++++++++++++++++++++++-- include/linux/socket.h | 3 + include/uapi/linux/io_uring.h | 7 +- net/socket.c | 65 ++++++++------ 6 files changed, 217 insertions(+), 32 deletions(-) -- Jens Axboe