在 2021/7/7 下午7:39, Pavel Begunkov 写道:
Implement an old idea allowing open/accept io_uring requests to register a newly created file as a io_uring's fixed file instead of placing it into a task's file table. The switching is encoded in io_uring's SQEs by setting sqe->buf_index/file_index, so restricted to 2^16-1. Don't think we need more, but may be a good idea to scrap u32 somewhere instead. From the net side only needs a function doing __sys_accept4_file() but not installing fd, see 2/4. Only RFC for now, the new functionality is tested only for open yet. I hope we can remember the author of the idea to add attribution.
Great feature! I believe this one leverages linked sqes, we may need to remind users to be careful when they use this feature in shared sqthread mode since linked sqes may be splited.
Pavel Begunkov (4): io_uring: allow open directly into fixed fd table net: add an accept helper not installing fd io_uring: hand code io_accept()' fd installing io_uring: accept directly into fixed file table fs/io_uring.c | 113 +++++++++++++++++++++++++++++----- include/linux/socket.h | 3 + include/uapi/linux/io_uring.h | 2 + net/socket.c | 71 +++++++++++---------- 4 files changed, 138 insertions(+), 51 deletions(-)