Hi Linus, Not quite as small this week as I had hoped, but at least this should be the end of it. All the little known issues have been ironed out - most of it little stuff, but cancelations being the bigger part. Only minor tweaks and/or regular fixes expected beyond this point. - Fix the creds tracking for async (io-wq and SQPOLL) - Various SQPOLL fixes related to parking, sharing, forking, IOPOLL, completions, and life times. Much simpler now. - Make IO threads unfreezable by default, on account of a bug report that had them spinning on resume. Honestly not quite sure why thawing leaves us with a perpetual signal pending (causing the spin), but for now make them unfreezable like there were in 5.11 and prior. - Move personality_idr to xarray, solving a use-after-free related to removing an entry from the iterator callback. Buffer idr needs the same treatment. - Re-org around and task vs context tracking, enabling the fixing of cancelations, and then cancelation fixes on top. - Various little bits of cleanups and hardening, and removal of now dead parts. Please pull! The following changes since commit a38fd8748464831584a19438cbb3082b5a2dab15: Linux 5.12-rc2 (2021-03-05 17:33:41 -0800) are available in the Git repository at: git://git.kernel.dk/linux-block.git tags/io_uring-5.12-2021-03-12 for you to fetch changes up to 58f99373834151e1ca7edc49bc5578d9d40db099: io_uring: fix OP_ASYNC_CANCEL across tasks (2021-03-12 09:42:56 -0700) ---------------------------------------------------------------- io_uring-5.12-2021-03-12 ---------------------------------------------------------------- Jens Axboe (9): io-wq: fix race in freeing 'wq' and worker access io-wq: always track creds for async issue io_uring: SQPOLL parking fixes io-wq: remove unused 'user' member of io_wq io_uring: move all io_kiocb init early in io_init_req() io_uring: always wait for sqd exited when stopping SQPOLL thread kernel: make IO threads unfreezable by default io_uring: force creation of separate context for ATTACH_WQ and non-threads io_uring: perform IOPOLL reaping if canceler is thread itself Matthew Wilcox (Oracle) (1): io_uring: Convert personality_idr to XArray Pavel Begunkov (20): io_uring: make del_task_file more forgiving io_uring: introduce ctx to tctx back map io_uring: do ctx initiated file note removal io_uring: don't take task ring-file notes io_uring: index io_uring->xa by ctx not file io_uring: warn when ring exit takes too long io_uring: cancel reqs of all iowq's on ring exit io-wq: warn on creating manager while exiting io_uring: fix unrelated ctx reqs cancellation io_uring: clean R_DISABLED startup mess io_uring: fix io_sq_offload_create error handling io_uring: add io_disarm_next() helper io_uring: fix complete_post races for linked req io_uring: fix invalid ctx->sq_thread_idle io_uring: remove indirect ctx into sqo injection io_uring: cancel deferred requests in try_cancel io_uring: remove useless ->startup completion io_uring: prevent racy sqd->thread checks io_uring: cancel sqpoll via task_work io_uring: fix OP_ASYNC_CANCEL across tasks Stefan Metzmacher (2): io_uring: run __io_sq_thread() with the initial creds from io_uring_setup() io_uring: kill io_sq_thread_fork() and return -EOWNERDEAD if the sq_thread is gone Yang Li (1): io_uring: remove unneeded variable 'ret' yangerkun (1): io-wq: fix ref leak for req in case of exit cancelations fs/io-wq.c | 25 +- fs/io-wq.h | 2 +- fs/io_uring.c | 837 ++++++++++++++++++++++++++--------------------- include/linux/io_uring.h | 2 +- kernel/fork.c | 1 + 5 files changed, 470 insertions(+), 397 deletions(-) -- Jens Axboe