* [GIT PULL] io_uring changes for 5.13-rc
@ 2021-04-27 18:25 Jens Axboe
2021-04-28 22:24 ` pr-tracker-bot
0 siblings, 1 reply; 2+ messages in thread
From: Jens Axboe @ 2021-04-27 18:25 UTC (permalink / raw)
To: Linus Torvalds; +Cc: io-uring
Hi Linus,
Here are the io_uring changes queued up for 5.13. This pull request
contains:
- Support for multi-shot mode for POLL requests
- More efficient reference counting. This is shamelessly stolen from
the mm side. Even though referencing is mostly single/dual user, the
128 count was retained to keep the code the same. Maybe this
should/could be made generic at some point.
- Removal of the need to have a manager thread for each ring. The manager
threads only job was checking and creating new io-threads as needed,
instead we handle this from the queue path.
- Allow SQPOLL without CAP_SYS_ADMIN or CAP_SYS_NICE. Since 5.12, this
thread is "just" a regular application thread, so no need to restrict
use of it anymore.
- Cleanup of how internal async poll data lifetime is managed.
- Fix for syzbot reported crash on SQPOLL cancelation.
- Make buffer registration more like file registrations, which includes
flexibility in avoiding full set unregistration and re-registration.
- Fix for io-wq affinity setting.
- Be a bit more defensive in task->pf_io_worker setup.
- Various SQPOLL fixes.
- Cleanup of SQPOLL creds handling.
- Improvements to in-flight request tracking.
- File registration cleanups.
- Tons of cleanups and little fixes
Please pull!
The following changes since commit d434405aaab7d0ebc516b68a8fc4100922d7f5ef:
Linux 5.12-rc7 (2021-04-11 15:16:13 -0700)
are available in the Git repository at:
git://git.kernel.dk/linux-block.git tags/for-5.13/io_uring-2021-04-27
for you to fetch changes up to 7b289c38335ec7bebe45ed31137d596c808e23ac:
io_uring: maintain drain logic for multishot poll requests (2021-04-27 07:38:58 -0600)
----------------------------------------------------------------
for-5.13/io_uring-2021-04-27
----------------------------------------------------------------
Bijan Mottahedeh (1):
io_uring: implement fixed buffers registration similar to fixed files
Colin Ian King (1):
io_uring: Fix uninitialized variable up.resv
Hao Xu (4):
io-wq: simplify code in __io_worker_busy()
io_uring: check sqring and iopoll_list before shedule
io_uring: update sq_thread_idle after ctx deleted
io_uring: maintain drain logic for multishot poll requests
Jens Axboe (26):
io_uring: wrap io_kiocb reference count manipulation in helpers
io_uring: switch to atomic_t for io_kiocb reference count
io_uring: don't check for io_uring_fops for fixed files
io_uring: cache async and regular file state for fixed files
io_uring: correct comment on poll vs iopoll
io_uring: transform ret == 0 for poll cancelation completions
io_uring: mask in error/nval/hangup consistently for poll
io_uring: include cflags in completion trace event
io_uring: add multishot mode for IORING_OP_POLL_ADD
io_uring: abstract out helper for removing poll waitqs/hashes
io_uring: terminate multishot poll for CQ ring overflow
io_uring: abstract out a io_poll_find_helper()
io_uring: allow events and user_data update of running poll requests
kernel: allow fork with TIF_NOTIFY_SIGNAL pending
io-wq: eliminate the need for a manager thread
io_uring: allow SQPOLL without CAP_SYS_ADMIN or CAP_SYS_NICE
io_uring: fix race around poll update and poll triggering
task_work: add helper for more targeted task_work canceling
io-wq: cancel task_work on exit only targeting the current 'wq'
io_uring: don't attempt re-add of multishot poll request if racing
io_uring: provide io_resubmit_prep() stub for !CONFIG_BLOCK
io_uring: disable multishot poll for double poll add cases
io_uring: put flag checking for needing req cleanup in one spot
io_uring: tie req->apoll to request lifetime
io_uring: fix merge error for async resubmit
io-wq: remove unused io_wqe_need_worker() function
Palash Oswal (1):
io_uring: Check current->io_uring in io_uring_cancel_sqpoll
Pavel Begunkov (120):
io_uring: avoid taking ctx refs for task-cancel
io_uring: reuse io_req_task_queue_fail()
io_uring: further deduplicate file slot selection
io_uring: add a helper failing not issued requests
io_uring: refactor provide/remove buffer locking
io_uring: use better types for cflags
io_uring: refactor out send/recv async setup
io_uring: untie alloc_async_data and needs_async_data
io_uring: rethink def->needs_async_data
io_uring: merge defer_prep() and prep_async()
io_uring: simplify io_resubmit_prep()
io_uring: simplify io_sqd_update_thread_idle()
io_uring: don't take ctx refs in task_work handler
io_uring: optimise io_uring_enter()
io_uring: optimise tctx node checks/alloc
io_uring: keep io_req_free_batch() call locality
io_uring: inline __io_queue_linked_timeout()
io_uring: optimise success case of __io_queue_sqe
io_uring: refactor io_flush_cached_reqs()
io_uring: refactor rsrc refnode allocation
io_uring: inline io_put_req and friends
io_uring: refactor io_free_req_deferred()
io_uring: add helper flushing locked_free_list
io_uring: remove __io_req_task_cancel()
io_uring: inline io_clean_op()'s fast path
io_uring: optimise io_dismantle_req() fast path
io_uring: abolish old io_put_file()
io_uring: optimise io_req_task_work_add()
io_uring: don't clear REQ_F_LINK_TIMEOUT
io_uring: don't do extra EXITING cancellations
io_uring: remove tctx->sqpoll
io-wq: refactor *_get_acct()
io_uring: don't init req->work fully in advance
io_uring: kill unused REQ_F_NO_FILE_TABLE
io_uring: optimise kiocb_end_write for !ISREG
io_uring: don't alter iopoll reissue fail ret code
io_uring: hide iter revert in resubmit_prep
io_uring: optimise rw complete error handling
io_uring: allocate memory for overflowed CQEs
io_uring: reg buffer overflow checks hardening
io_uring: name rsrc bits consistently
io_uring: simplify io_rsrc_node_ref_zero
io_uring: use rsrc prealloc infra for files reg
io_uring: encapsulate rsrc node manipulations
io_uring: move rsrc_put callback into io_rsrc_data
io_uring: refactor io_queue_rsrc_removal()
io_uring: ctx-wide rsrc nodes
io_uring: reuse io_rsrc_node_destroy()
io_uring: remove useless is_dying check on quiesce
io_uring: combine lock/unlock sections on exit
io_uring: better ref handling in poll_remove_one
io_uring: remove unused hash_wait
io_uring: refactor io_async_cancel()
io_uring: improve import_fixed overflow checks
io_uring: store reg buffer end instead of length
io_uring: kill unused forward decls
io_uring: lock annotate timeouts and poll
io_uring: simplify overflow handling
io_uring: put link timeout req consistently
io_uring: deduplicate NOSIGNAL setting
io_uring: set proper FFS* flags on reg file update
io_uring: don't quiesce intial files register
io_uring: refactor file tables alloc/free
io_uring: encapsulate fixed files into struct
io_uring: kill outdated comment about splice punt
io_uring: clean up io_poll_task_func()
io_uring: refactor io_poll_complete()
io_uring: simplify apoll hash removal
io_uring: unify task and files cancel loops
io_uring: track inflight requests through counter
io_uring: unify files and task cancel
io_uring: refactor io_close
io_uring: enable inline completion for more cases
io_uring: refactor compat_msghdr import
io_uring: optimise non-eventfd post-event
io_uring: always pass cflags into fill_event()
io_uring: optimise fill_event() by inlining
io_uring: simplify io_rsrc_data refcounting
io_uring: add buffer unmap helper
io_uring: cleanup buffer register
io_uring: split file table from rsrc nodes
io_uring: improve sqo stop
io_uring: improve hardlink code generation
io_uring: return back safer resurrect
io_uring: fix leaking reg files on exit
io_uring: fix uninit old data for poll event upd
io_uring: split poll and poll update structures
io_uring: add timeout completion_lock annotation
io_uring: refactor hrtimer_try_to_cancel uses
io_uring: clean up io_poll_remove_waitqs()
io_uring: don't fail overflow on in_idle
io_uring: skip futile iopoll iterations
io_uring: inline io_iopoll_getevents()
io_uring: refactor io_ring_exit_work()
io_uring: fix POLL_REMOVE removing apoll
io_uring: add helper for parsing poll events
io_uring: move poll update into remove not add
io_uring: don't fail submit with overflow backlog
io_uring: fix overflows checks in provide buffers
io_uring: check register restriction afore quiesce
io_uring: remove extra sqpoll submission halting
io_uring: fix shared sqpoll cancellation hangs
io_uring: move inflight un-tracking into cleanup
io_uring: safer sq_creds putting
io_uring: refactor io_sq_offload_create()
io_uring: move __io_sqe_files_unregister
io_uring: return back rsrc data free helper
io_uring: decouple CQE filling from requests
io_uring: preparation for rsrc tagging
io_uring: add generic path for rsrc update
io_uring: enumerate dynamic resources
io_uring: add IORING_REGISTER_RSRC
io_uring: add generic rsrc update with tags
io_uring: keep table of pointers to ubufs
io_uring: prepare fixed rw for dynanic buffers
io_uring: add full-fledged dynamic buffers support
io_uring: fix invalid error check after malloc
io_uring: fix work_exit sqpoll cancellations
io_uring: simplify SQPOLL cancellations
io_uring: fix NULL reg-buffer
Peter Zijlstra (1):
io-wq: Fix io_wq_worker_affinity()
Stefan Metzmacher (2):
kernel: always initialize task->pf_io_worker to NULL
io_uring: io_sq_thread() no longer needs to reset current->pf_io_worker
fs/io-wq.c | 336 +++--
fs/io-wq.h | 1 +
fs/io_uring.c | 2612 +++++++++++++++++++++------------------
include/linux/io_uring.h | 12 +-
include/linux/task_work.h | 2 +
include/trace/events/io_uring.h | 11 +-
include/uapi/linux/io_uring.h | 40 +
kernel/fork.c | 3 +-
kernel/task_work.c | 35 +-
9 files changed, 1599 insertions(+), 1453 deletions(-)
--
Jens Axboe
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2021-04-28 22:24 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-04-27 18:25 [GIT PULL] io_uring changes for 5.13-rc Jens Axboe
2021-04-28 22:24 ` pr-tracker-bot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox