All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jens Axboe <axboe@kernel.dk>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: "linux-block@vger.kernel.org" <linux-block@vger.kernel.org>
Subject: [GIT PULL] io_uring changes for 5.12-rc
Date: Wed, 17 Feb 2021 11:43:20 -0700	[thread overview]
Message-ID: <6626be56-907e-83fe-2fbb-45f880261fd8@kernel.dk> (raw)

Hi Linus,

Highlights from this cycles are things like request recycling and
task_work optimizations, which net us anywhere from 10-20% of speedups
on workloads that mostly are inline. This work was originall done to put
io_uring under memcg, which adds considerable overhead. But it's a
really nice win as well. Also worth highlighting is the LOOKUP_CACHED
work in the VFS, and using it in io_uring. Greatly speeds up the fast
path for file opens.

Note that this branch depends on Al's work.namei pull request that he
sent in earlier.

- Put io_uring under memcg protection. We accounted just the rings
  themselves under rlimit memlock before, now we account everything.

- Request cache recycling, persistent across invocations (Pavel, me)

- First part of a cleanup/improvement to buffer registration (Bijan)

- SQPOLL fixes (Hao)

- File registration NULL pointer fixup (Dan)

- LOOKUP_CACHED support for io_uring

- Disable /proc/thread-self/ for io_uring, like we do for /proc/self

- Add Pavel to the io_uring MAINTAINERS entry

- Tons of code cleanups and optimizations (Pavel)

- Support for skip entries in file registration (Noah)

Please pull!


The following changes since commit 1048ba83fb1c00cd24172e23e8263972f6b5d9ac:

  Linux 5.11-rc6 (2021-01-31 13:50:09 -0800)

are available in the Git repository at:

  git://git.kernel.dk/linux-block.git tags/for-5.12/io_uring-2021-02-17

for you to fetch changes up to 0b81e80c813f92520667c872d499a2dba8377be6:

  io_uring: tctx->task_lock should be IRQ safe (2021-02-16 11:11:20 -0700)

----------------------------------------------------------------
for-5.12/io_uring-2021-02-17

----------------------------------------------------------------
Bijan Mottahedeh (10):
      io_uring: modularize io_sqe_buffer_register
      io_uring: modularize io_sqe_buffers_register
      io_uring: rename file related variables to rsrc
      io_uring: generalize io_queue_rsrc_removal
      io_uring: separate ref_list from fixed_rsrc_data
      io_uring: add rsrc_ref locking routines
      io_uring: split alloc_fixed_file_ref_node
      io_uring: create common fixed_rsrc_ref_node handling routines
      io_uring: create common fixed_rsrc_data allocation routines
      io_uring: make percpu_ref_release names consistent

Colin Ian King (1):
      io_uring: remove redundant initialization of variable ret

Dan Carpenter (1):
      io_uring: Fix NULL dereference in error in io_sqe_files_register()

Hao Xu (2):
      io_uring: check kthread parked flag before sqthread goes to sleep
      io_uring: fix possible deadlock in io_uring_poll

Jens Axboe (19):
      Merge branch 'work.namei' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs into for-5.12/io_uring
      io_uring: enable LOOKUP_CACHED path resolution for filename lookups
      fs: provide locked helper variant of close_fd_get_file()
      io_uring: get rid of intermediate IORING_OP_CLOSE stage
      io_uring/io-wq: kill off now unused IO_WQ_WORK_NO_CANCEL
      io_uring: use persistent request cache
      io_uring: provide FIFO ordering for task_work
      io_uring: enable req cache for task_work items
      io_uring: enable req cache for IRQ driven IO
      io_uring: enable kmemcg account for io_uring requests
      io_uring: place ring SQ/CQ arrays under memcg memory limits
      io_uring: assign file_slot prior to calling io_sqe_file_register()
      io_uring: move submit side state closer in the ring
      io-wq: clear out worker ->fs and ->files
      io_uring: allow task match to be passed to io_req_cache_free()
      io_uring: add helper to free all request caches
      io_uring: kill cached requests from exiting task closing the ring
      proc: don't allow async path resolution of /proc/thread-self components
      io_uring: tctx->task_lock should be IRQ safe

Pavel Begunkov (69):
      io_uring: split ref_node alloc and init
      io_uring: optimise io_rw_reissue()
      io_uring: refactor io_resubmit_prep()
      io_uring: cleanup personalities under uring_lock
      io_uring: inline io_async_submit()
      io_uring: inline __io_commit_cqring()
      io_uring: further deduplicate #CQ events calc
      io_uring: simplify io_alloc_req()
      io_uring: remove __io_state_file_put
      io_uring: deduplicate failing task_work_add
      io_uring: add a helper timeout mode calculation
      io_uring: help inlining of io_req_complete()
      io_uring: don't flush CQEs deep down the stack
      io_uring: save atomic dec for inline executed reqs
      io_uring: ensure only sqo_task has file notes
      io_uring: consolidate putting reqs task
      io_uring: cleanup files_update looping
      MAINTAINERS: update io_uring section
      io_uring: fix inconsistent lock state
      io_uring: kill not used needs_file_no_error
      io_uring: inline io_req_drop_files()
      io_uring: remove work flags after cleanup
      io_uring: deduplicate adding to REQ_F_INFLIGHT
      io_uring: simplify do_read return parsing
      io_uring: deduplicate core cancellations sequence
      io_uring: refactor scheduling in io_cqring_wait
      io_uring: refactor io_cqring_wait
      io_uring: refactor io_read for unsupported nowait
      io_uring: further simplify do_read error parsing
      io_uring: let io_setup_async_rw take care of iovec
      io_uring: don't forget to adjust io_size
      io_uring: inline io_read()'s iovec freeing
      io_uring: highlight read-retry loop
      io_uring: treat NONBLOCK and RWF_NOWAIT similarly
      io_uring: io_import_iovec return type cleanup
      io_uring: deduplicate file table slot calculation
      io_uring/io-wq: return 2-step work swap scheme
      io_uring: set msg_name on msg fixup
      io_uring: clean iov usage for recvmsg buf select
      io_uring: refactor sendmsg/recvmsg iov managing
      io_uring: cleanup up cancel SQPOLL reqs across exec
      io_uring: replace force_nonblock with flags
      io_uring: make op handlers always take issue flags
      io_uring: don't propagate io_comp_state
      io_uring: don't keep submit_state on stack
      io_uring: remove ctx from comp_state
      io_uring: don't reinit submit state every time
      io_uring: replace list with array for compl batch
      io_uring: submit-completion free batching
      io_uring: remove fallback_req
      io_uring: count ctx refs separately from reqs
      io_uring: persistent req cache
      io_uring: feed reqs back into alloc cache
      io_uring: take comp_state from ctx
      io_uring: defer flushing cached reqs
      io_uring: unpark SQPOLL thread for cancelation
      io_uring: clean up io_req_free_batch_finish()
      io_uring: simplify iopoll reissuing
      io_uring: move res check out of io_rw_reissue()
      io_uring: inline io_complete_rw_common()
      io_uring: take compl state from submit state
      io_uring: optimise out unlikely link queue
      io_uring: optimise SQPOLL mm/files grabbing
      io_uring: don't duplicate io_req_task_queue()
      io_uring: save ctx put/get for task_work submit
      io_uring: don't split out consume out of SQE get
      io_uring: don't check PF_EXITING from syscall
      io_uring: clean io_req_find_next() fast check
      io_uring: optimise io_init_req() flags setting

Yejune Deng (1):
      io_uring: simplify io_remove_personalities()

noah (1):
      io_uring: Add skip option for __io_sqe_files_update

 MAINTAINERS                   |    5 +
 fs/file.c                     |   36 +-
 fs/internal.h                 |    1 +
 fs/io-wq.c                    |   31 +-
 fs/io-wq.h                    |   14 +-
 fs/io_uring.c                 | 2658 +++++++++++++++++----------------
 fs/namei.c                    |    8 +-
 fs/proc/self.c                |    2 +-
 fs/proc/thread_self.c         |    7 +
 include/linux/io_uring.h      |   14 +
 include/uapi/linux/io_uring.h |   10 +
 11 files changed, 1435 insertions(+), 1351 deletions(-)

-- 
Jens Axboe


             reply	other threads:[~2021-02-17 18:44 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-17 18:43 Jens Axboe [this message]
2021-02-17 23:33 ` [GIT PULL] io_uring changes for 5.12-rc Jens Axboe
2021-02-21 19:14 ` pr-tracker-bot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=6626be56-907e-83fe-2fbb-45f880261fd8@kernel.dk \
    --to=axboe@kernel.dk \
    --cc=linux-block@vger.kernel.org \
    --cc=torvalds@linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.