LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
* [PATCH v3 0/4] open/accept directly into io_uring fixed file table
@ 2021-08-21 15:52 Pavel Begunkov
  2021-08-21 15:52 ` [PATCH v3 1/4] net: add accept helper not installing fd Pavel Begunkov
                   ` (4 more replies)
  0 siblings, 5 replies; 12+ messages in thread
From: Pavel Begunkov @ 2021-08-21 15:52 UTC (permalink / raw)
  To: Jens Axboe, io-uring, Josh Triplett
  Cc: David S . Miller, Jakub Kicinski, linux-kernel, netdev,
	Stefan Metzmacher

Add an optional feature to open/accept directly into io_uring's fixed
file table bypassing the normal file table. Same behaviour if as the
snippet below, but in one operation:

sqe = prep_[open,accept](...);
cqe = submit_and_wait(sqe);
io_uring_register_files_update(uring_idx, (fd = cqe->res));
close((fd = cqe->res));

The idea in pretty old, and was brough up and implemented a year ago
by Josh Triplett, though haven't sought the light for some reasons.

The behaviour is controlled by setting sqe->file_index, where 0 implies
the old behaviour. If non-zero value is specified, then it will behave
as described and place the file into a fixed file slot
sqe->file_index - 1. A file table should be already created, the slot
should be valid and empty, otherwise the operation will fail.

we can't use IOSQE_FIXED_FILE to switch between modes, because accept
takes a file, and it already uses the flag with a different meaning.

since RFC:
 - added attribution
 - updated descriptions
 - rebased

since v1:
 - EBADF if slot is already used (Josh Triplett)
 - alias index with splice_fd_in (Josh Triplett)
 - fix a bound check bug

Pavel Begunkov (4):
  net: add accept helper not installing fd
  io_uring: openat directly into fixed fd table
  io_uring: hand code io_accept() fd installing
  io_uring: accept directly into fixed file table

 fs/io_uring.c                 | 129 +++++++++++++++++++++++++++++-----
 include/linux/socket.h        |   3 +
 include/uapi/linux/io_uring.h |   5 +-
 net/socket.c                  |  71 ++++++++++---------
 4 files changed, 157 insertions(+), 51 deletions(-)

-- 
2.32.0


^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2021-08-24 14:44 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-21 15:52 [PATCH v3 0/4] open/accept directly into io_uring fixed file table Pavel Begunkov
2021-08-21 15:52 ` [PATCH v3 1/4] net: add accept helper not installing fd Pavel Begunkov
2021-08-23 16:35   ` Jakub Kicinski
2021-08-21 15:52 ` [PATCH v3 2/4] io_uring: openat directly into fixed fd table Pavel Begunkov
2021-08-21 15:52 ` [PATCH v3 3/4] io_uring: hand code io_accept() fd installing Pavel Begunkov
2021-08-21 15:52 ` [PATCH v3 4/4] io_uring: accept directly into fixed file table Pavel Begunkov
2021-08-22  2:18 ` [PATCH v3 0/4] open/accept directly into io_uring " Jens Axboe
2021-08-23 19:13   ` Josh Triplett
2021-08-23 19:40     ` Jens Axboe
2021-08-24  9:48       ` Pavel Begunkov
2021-08-24 14:02         ` Jens Axboe
2021-08-24 14:43           ` Pavel Begunkov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).