Hi Linus, Here are the io_uring changes queued for the 6.9 kernel release. This pull request contains: - Make running of task_work internal loops more fair, and unify how the different methods deal with them (me) - Support for per-ring NAPI. The two minor networking patches are in a shared branch with netdev. (Stefan) - Add support for truncate (Tony) - Export SQPOLL utilization stats (Xiaobing) - Multishot fixes (Pavel) - Fix for a race in manipulating the request flags via poll (Pavel) - Cleanup the multishot checking by making it generic, moving it out of opcode handlers (Pavel) - Various tweaks and cleanups (me, Kunwu, Alexander) Please pull! The following changes since commit 54be6c6c5ae8e0d93a6c4641cb7528eb0b6ba478: Linux 6.8-rc3 (2024-02-04 12:20:36 +0000) are available in the Git repository at: git://git.kernel.dk/linux.git tags/for-6.9/io_uring-20240310 for you to fetch changes up to 606559dc4fa36a954a51fbf1c6c0cc320f551fe0: io_uring: Fix sqpoll utilization check racing with dying sqpoll (2024-03-09 07:27:09 -0700) ---------------------------------------------------------------- for-6.9/io_uring-20240310 ---------------------------------------------------------------- Alexander Mikhalitsyn (1): io_uring: use file_mnt_idmap helper Dan Carpenter (1): io_uring/net: fix overflow check in io_recvmsg_mshot_prep() Gabriel Krisman Bertazi (1): io_uring: Fix sqpoll utilization check racing with dying sqpoll Jens Axboe (34): io_uring: expand main struct io_kiocb flags to 64-bits io_uring/cancel: don't default to setting req->work.cancel_seq io_uring: add io_file_can_poll() helper io_uring: mark the need to lock/unlock the ring as unlikely io_uring: cleanup io_req_complete_post() io_uring/rw: remove dead file == NULL check io_uring/kbuf: cleanup passing back cflags io_uring: remove looping around handling traditional task_work io_uring: remove 'loops' argument from trace_io_uring_task_work_run() io_uring: handle traditional task_work in FIFO order io_uring: remove next io_kiocb fetch in task_work running io_uring: remove unconditional looping in local task_work handling io_uring/poll: improve readability of poll reference decrementing io_uring: cleanup handle_tw_list() calling convention io_uring: pass in counter to handle_tw_list() rather than return it io_uring/sqpoll: manage task_work privately io_uring: re-arrange struct io_ring_ctx to reduce padding Merge branch 'for-io_uring-add-napi-busy-polling-support' of git://git.kernel.org/pub/scm/linux/kernel/git/kuba/linux into for-6.9/io_uring io_uring/napi: ensure napi polling is aborted when work is available io_uring: wake SQPOLL task when task_work is added to an empty queue io_uring/sqpoll: use the correct check for pending task_work io_uring: kill stale comment for io_cqring_overflow_kill() io_uring/napi: enable even with a timeout of 0 io_uring/net: unify how recvmsg and sendmsg copy in the msghdr io_uring/net: move receive multishot out of the generic msghdr path io_uring/net: improve the usercopy for sendmsg/recvmsg io_uring/kbuf: flag request if buffer pool is empty after buffer pick io_uring/net: move recv/recvmsg flags out of retry loop io_uring/net: clear REQ_F_BL_EMPTY in the multishot retry handler io_uring/net: correctly handle multishot recvmsg retry setup io_uring/net: remove dependency on REQ_F_PARTIAL_IO for sr->done_io io_uring/kbuf: rename REQ_F_PARTIAL_IO to REQ_F_BL_NO_RECYCLE io_uring/net: simplify msghd->msg_inq checking io_uring/net: add io_req_msg_cleanup() helper Kuniyuki Iwashima (1): io_uring: Don't include af_unix.h. Kunwu Chan (1): io_uring: Simplify the allocation of slab caches Muhammad Usama Anjum (1): io_uring/net: correct the type of variable Pavel Begunkov (5): io_uring: fix mshot read defer taskrun cqe posting io_uring: fix io_queue_proc modifying req->flags io_uring: fix mshot io-wq checks io_uring: refactor DEFER_TASKRUN multishot checks io_uring/net: dedup io_recv_finish req completion Stefan Roesch (6): net: split off __napi_busy_poll from napi_busy_poll net: add napi_busy_loop_rcu() io-uring: move io_wait_queue definition to header file io-uring: add napi busy poll support io-uring: add sqpoll support for napi busy poll io_uring: add register/unregister napi function Tony Solomonik (2): Add do_ftruncate that truncates a struct file io_uring: add support for ftruncate Xiaobing Li (1): io_uring/sqpoll: statistics of the true utilization of sq threads fs/internal.h | 1 + fs/open.c | 53 +++--- include/linux/io_uring_types.h | 137 ++++++++------ include/net/busy_poll.h | 4 + include/trace/events/io_uring.h | 30 ++-- include/uapi/linux/io_uring.h | 13 ++ io_uring/Makefile | 3 +- io_uring/cancel.c | 3 +- io_uring/cancel.h | 10 ++ io_uring/fdinfo.c | 18 +- io_uring/filetable.h | 2 +- io_uring/io_uring.c | 249 +++++++++++++------------- io_uring/io_uring.h | 77 +++++++- io_uring/kbuf.c | 35 ++-- io_uring/kbuf.h | 61 ++++--- io_uring/napi.c | 332 ++++++++++++++++++++++++++++++++++ io_uring/napi.h | 104 +++++++++++ io_uring/net.c | 382 +++++++++++++++++++++------------------- io_uring/opdef.c | 10 ++ io_uring/poll.c | 33 ++-- io_uring/register.c | 13 ++ io_uring/rsrc.h | 2 - io_uring/rw.c | 13 +- io_uring/sqpoll.c | 59 ++++++- io_uring/sqpoll.h | 1 + io_uring/truncate.c | 48 +++++ io_uring/truncate.h | 4 + io_uring/uring_cmd.c | 1 + io_uring/xattr.c | 2 +- net/core/dev.c | 57 ++++-- 30 files changed, 1253 insertions(+), 504 deletions(-) create mode 100644 io_uring/napi.c create mode 100644 io_uring/napi.h create mode 100644 io_uring/truncate.c create mode 100644 io_uring/truncate.h -- Jens Axboe