Hi Linus, As it sometimes happens, a two reporst came in around the merge window open that led to some fixes. Hence this one is a bit bigger than usual followup fixes, but most of it will be going towards stable, outside of the fixes that are addressing regressions from this merge window. In detail: - postgres is a heavy user of signals between tasks, and if we're unlucky this can interfere with io-wq worker creation. Make sure we're resilient against unrelated signal handling. This set of changes also includes hardening against allocation failures, which could previously had led to stalls. - Some use cases that end up having a mix of bounded and unbounded work would have starvation issues related to that. Split the pending work lists to handle that better. - Completion trace int -> unsigned -> long fix - Fix issue with REGISTER_IOWQ_MAX_WORKERS and SQPOLL - Fix regression with hash wait lock in this merge window - Fix retry issued on block devices (Ming) - Fix regression with links in this merge window (Pavel) - Fix race with multi-shot poll and completions (Xiaoguang) - Ensure regular file IO doesn't inadvertently skip completion batching (Pavel) - Ensure submissions are flushed after running task_work (Pavel) Please pull! The following changes since commit 87df7fb922d18e96992aa5e824aa34b2065fef59: io-wq: fix wakeup race when adding new work (2021-08-30 07:45:47 -0600) are available in the Git repository at: git://git.kernel.dk/linux-block.git tags/for-5.15/io_uring-2021-09-04 for you to fetch changes up to 2fc2a7a62eb58650e71b4550cf6fa6cc0a75b2d2: io_uring: io_uring_complete() trace should take an integer (2021-09-03 16:59:06 -0600) ---------------------------------------------------------------- for-5.15/io_uring-2021-09-04 ---------------------------------------------------------------- Jens Axboe (10): io-wq: fix race between adding work and activating a free worker io_uring: IORING_OP_WRITE needs hash_reg_file set io-wq: ensure that hash wait lock is IRQ disabling io-wq: fix queue stalling race io-wq: split bounded and unbounded work into separate lists io-wq: only exit on fatal signals io-wq: get rid of FIXED worker flag io-wq: make worker creation resilient against signals io_uring: ensure IORING_REGISTER_IOWQ_MAX_WORKERS works with SQPOLL io_uring: io_uring_complete() trace should take an integer Ming Lei (1): io_uring: retry in case of short read on block device Pavel Begunkov (4): io_uring: fix queueing half-created requests io_uring: don't submit half-prepared drain request io_uring: don't disable kiocb_done() CQE batching io_uring: prolong tctx_task_work() with flushing Xiaoguang Wang (1): io_uring: fix possible poll event lost in multi shot mode fs/io-wq.c | 424 ++++++++++++++++++++++++---------------- fs/io_uring.c | 76 ++++++- include/trace/events/io_uring.h | 6 +- 3 files changed, 323 insertions(+), 183 deletions(-) -- Jens Axboe