| From: |
| Jens Axboe <axboe-AT-kernel.dk> |
| To: |
| linux-block-AT-vger.kernel.org |
| Subject: |
| [PATCHSET v2 0/4] io_uring: add support for accept(4) |
| Date: |
| Fri, 25 Oct 2019 11:30:33 -0600 |
| Message-ID: |
| <20191025173037.13486-1-axboe@kernel.dk> |
| Cc: |
| davem-AT-davemloft.net, netdev-AT-vger.kernel.org, jannh-AT-google.com |
| Archive-link: |
| Article |
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