[GIT PULL] First round io_uring updates for 6.2-rc1

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Linus,

First part of the io_uring changes for the 6.2 merge window. We ended up
splitting this into two, to avoid unnecessary merge conflicts with fixes
that went into 6.1 later in the cycle.

This pull request contains:

- Always ensure proper ordering in case of CQ ring overflow, which then
  means we can remove some work-arounds for that (Dylan)

- Support completion batching for multishot, greatly increasing the
  efficiency for those (Dylan)

- Flag epoll/eventfd wakeups done from io_uring, so that we can easily
  tell if we're recursing into io_uring again. Previously, this would
  have resulted in repeated multishot notifications if we had a
  dependency there. That could happen if an eventfd was registered as
  the ring eventfd, and we multishot polled for events on it. Or if an
  io_uring fd was added to epoll, and io_uring had a multishot request
  for the epoll fd. Test cases here [1]. Previously these got terminated
  when the CQ ring eventually overflowed, now it's handled gracefully
  (me).

- Tightening of the IOPOLL based completions (Pavel)

- Optimizations of the networking zero-copy paths (Pavel)

- Various tweaks and fixes (Dylan, Pavel)

[1] https://git.kernel.dk/cgit/liburing/commit/?id=919755a7d0096fda08fb6d65ac54ad8d0fe027cd

Please pull!


The following changes since commit eb7081409f94a9a8608593d0fb63a1aa3d6f95d8:

  Linux 6.1-rc6 (2022-11-20 16:02:16 -0800)

are available in the Git repository at:

  git://git.kernel.dk/linux.git tags/for-6.2/io_uring-2022-12-08

for you to fetch changes up to 5d772916855f593672de55c437925daccc8ecd73:

  io_uring: keep unlock_post inlined in hot path (2022-11-25 06:11:15 -0700)

----------------------------------------------------------------
for-6.2/io_uring-2022-12-08

----------------------------------------------------------------
Dylan Yudaken (13):
      io_uring: do not always force run task_work in io_uring_register
      io_uring: revert "io_uring fix multishot accept ordering"
      io_uring: allow multishot recv CQEs to overflow
      io_uring: always lock in io_apoll_task_func
      io_uring: defer all io_req_complete_failed
      io_uring: allow defer completion for aux posted cqes
      io_uring: add io_aux_cqe which allows deferred completion
      io_uring: make io_fill_cqe_aux static
      io_uring: add lockdep assertion in io_fill_cqe_aux
      io_uring: remove overflow param from io_post_aux_cqe
      io_uring: allow multishot polled reqs to defer completion
      io_uring: remove io_req_complete_post_tw
      io_uring: spelling fix

Jens Axboe (5):
      eventpoll: add EPOLL_URING_WAKE poll wakeup flag
      eventfd: provide a eventfd_signal_mask() helper
      io_uring: pass in EPOLL_URING_WAKE for eventfd signaling and wakeups
      Revert "io_uring: disallow self-propelled ring polling"
      io_uring: kill io_cqring_ev_posted() and __io_cq_unlock_post()

Lin Ma (2):
      io_uring/poll: remove outdated comments of caching
      io_uring: update outdated comment of callbacks

Pavel Begunkov (19):
      io_uring: move kbuf put out of generic tw complete
      io_uring/net: remove extra notif rsrc setup
      io_uring/net: preset notif tw handler
      io_uring/net: rename io_uring_tx_zerocopy_callback
      io_uring/net: inline io_notif_flush()
      io_uring: move zc reporting from the hot path
      io_uring/net: move mm accounting to a slower path
      io_uring: inline io_req_task_work_add()
      io_uring: split tw fallback into a function
      io_uring: inline __io_req_complete_post()
      io_uring: add completion locking for iopoll
      io_uring: hold locks for io_req_complete_failed
      io_uring: use io_req_task_complete() in timeout
      io_uring: remove io_req_tw_post_queue
      io_uring: inline __io_req_complete_put()
      io_uring: iopoll protect complete_post
      io_uring: remove iopoll spinlock
      io_uring: don't use complete_post in kbuf
      io_uring: keep unlock_post inlined in hot path

Stefan Metzmacher (1):
      io_uring/net: introduce IORING_SEND_ZC_REPORT_USAGE flag

Xinghui Li (1):
      io_uring: fix two assignments in if conditions

 fs/eventfd.c                   |  37 ++++---
 fs/eventpoll.c                 |  18 ++--
 include/linux/eventfd.h        |   7 ++
 include/linux/io_uring_types.h |   2 +
 include/uapi/linux/eventpoll.h |   6 ++
 include/uapi/linux/io_uring.h  |  18 ++++
 io_uring/io_uring.c            | 223 ++++++++++++++++++++++++-----------------
 io_uring/io_uring.h            |  43 +++++---
 io_uring/kbuf.c                |  14 +--
 io_uring/msg_ring.c            |   4 +-
 io_uring/net.c                 |  56 +++++++----
 io_uring/notif.c               |  57 +++++++----
 io_uring/notif.h               |  15 ++-
 io_uring/poll.c                |  33 +++---
 io_uring/rsrc.c                |  11 +-
 io_uring/rw.c                  |   6 ++
 io_uring/timeout.c             |  10 +-
 io_uring/uring_cmd.c           |   2 +-
 18 files changed, 355 insertions(+), 207 deletions(-)

-- 
Jens Axboe




[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux