From: Jens Axboe <[email protected]>
To: Linus Torvalds <[email protected]>
Cc: io-uring <[email protected]>
Subject: [GIT PULL] io_uring fixes for 5.12-rc2
Date: Fri, 5 Mar 2021 11:09:09 -0700 [thread overview]
Message-ID: <[email protected]> (raw)
Hi Linus,
A bit of a mix between fallout from the worker change,
cleanups/reductions now possible from that change, and fixes in general.
In detail:
- Fully serialize manager and worker creation, fixing races due to that.
- Clean up some naming that had gone stale.
- SQPOLL fixes.
- Fix race condition around task_work rework that went into this merge
window.
- Implement unshare. Used for when the original task does unshare(2) or
setuid/seteuid and friends, drops the original workers and forks new
ones.
- Drop the only remaining piece of state shuffling we had left, which
was cred. Move it into issue instead, and we can drop all of that code
too.
- Kill f_op->flush() usage. That was such a nasty hack that we had out
of necessity, we no longer need it.
- Following from ->flush() removal, we can also drop various bits of ctx
state related to SQPOLL and cancelations.
- Fix an issue with IOPOLL retry, which originally was fallout from a
filemap change (removing iov_iter_revert()), but uncovered an issue
with iovec re-import too late.
- Fix an issue with system suspend.
- Use xchg() for fallback work, instead of cmpxchg().
- Properly destroy io-wq on exec.
- Add create_io_thread() core helper, and use that in io-wq and
io_uring. This allows us to remove various silly completion events
related to thread setup.
- A few error handling fixes.
This should be the grunt of fixes necessary for the new workers, next
week should be quieter. We've got a pending series from Pavel on
cancelations, and how tasks and rings are indexed. Outside of that,
should just be minor fixes. Even with these fixes, we're still killing a
net ~80 lines.
Please pull!
The following changes since commit fe07bfda2fb9cdef8a4d4008a409bb02f35f1bd8:
Linux 5.12-rc1 (2021-02-28 16:05:19 -0800)
are available in the Git repository at:
git://git.kernel.dk/linux-block.git tags/io_uring-5.12-2021-03-05
for you to fetch changes up to e45cff58858883290c98f65d409839a7295c95f3:
io_uring: don't restrict issue_flags for io_openat (2021-03-05 09:52:29 -0700)
----------------------------------------------------------------
io_uring-5.12-2021-03-05
----------------------------------------------------------------
Jens Axboe (27):
io-wq: wait for worker startup when forking a new one
io-wq: have manager wait for all workers to exit
io-wq: don't ask for a new worker if we're exiting
io-wq: rename wq->done completion to wq->started
io-wq: wait for manager exit on wq destroy
io-wq: fix double put of 'wq' in error path
io_uring: SQPOLL stop error handling fixes
io_uring: don't use complete_all() on SQPOLL thread exit
io-wq: provide an io_wq_put_and_exit() helper
io_uring: fix race condition in task_work add and clear
io_uring: remove unused argument 'tsk' from io_req_caches_free()
io_uring: kill unnecessary REQ_F_WORK_INITIALIZED checks
io_uring: move cred assignment into io_issue_sqe()
io_uring: kill unnecessary io_run_ctx_fallback() in io_ring_exit_work()
io_uring: kill io_uring_flush()
io_uring: ensure that SQPOLL thread is started for exit
io_uring: ignore double poll add on the same waitqueue head
io-wq: fix error path leak of buffered write hash map
io_uring: fix -EAGAIN retry with IOPOLL
io_uring: ensure that threads freeze on suspend
io-wq: ensure all pending work is canceled on exit
kernel: provide create_io_thread() helper
io_uring: move to using create_io_thread()
io_uring: don't keep looping for more events if we can't flush overflow
io_uring: clear IOCB_WAITQ for non -EIOCBQUEUED return
io-wq: kill hashed waitqueue before manager exits
io_uring: make SQPOLL thread parking saner
Pavel Begunkov (14):
io_uring: run fallback on cancellation
io_uring: warn on not destroyed io-wq
io_uring: destroy io-wq on exec
io_uring: fix __tctx_task_work() ctx race
io_uring: replace cmpxchg in fallback with xchg
io_uring: kill sqo_dead and sqo submission halting
io_uring: remove sqo_task
io_uring: choose right tctx->io_wq for try cancel
io_uring: inline io_req_clean_work()
io_uring: inline __io_queue_async_work()
io_uring: remove extra in_idle wake up
io_uring: cancel-match based on flags
io_uring: reliably cancel linked timeouts
io_uring: don't restrict issue_flags for io_openat
fs/io-wq.c | 261 +++++++++++------------
fs/io-wq.h | 5 +-
fs/io_uring.c | 500 +++++++++++++++++++--------------------------
include/linux/io_uring.h | 2 +-
include/linux/sched/task.h | 2 +
kernel/fork.c | 30 +++
6 files changed, 361 insertions(+), 439 deletions(-)
--
Jens Axboe
next reply other threads:[~2021-03-05 18:10 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-03-05 18:09 Jens Axboe [this message]
2021-03-05 20:54 ` [GIT PULL] io_uring fixes for 5.12-rc2 Linus Torvalds
2021-03-05 21:58 ` Jens Axboe
2021-03-05 23:03 ` Linus Torvalds
2021-03-06 16:25 ` Jens Axboe
2021-03-06 21:14 ` Linus Torvalds
2021-03-06 22:28 ` Jens Axboe
2021-03-05 21:58 ` 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 \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox