• Linus Torvalds's avatar
    Merge tag 'for-5.15/io_uring-2021-09-04' of git://git.kernel.dk/linux-block · 60f8fbaa
    Linus Torvalds authored
    Pull io_uring fixes from Jens Axboe:
     "As sometimes happens, two reports 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)"
    
    * tag 'for-5.15/io_uring-2021-09-04' of git://git.kernel.dk/linux-block:
      io_uring: io_uring_complete() trace should take an integer
      io_uring: fix possible poll event lost in multi shot mode
      io_uring: prolong tctx_task_work() with flushing
      io_uring: don't disable kiocb_done() CQE batching
      io_uring: ensure IORING_REGISTER_IOWQ_MAX_WORKERS works with SQPOLL
      io-wq: make worker creation resilient against signals
      io-wq: get rid of FIXED worker flag
      io-wq: only exit on fatal signals
      io-wq: split bounded and unbounded work into separate lists
      io-wq: fix queue stalling race
      io_uring: don't submit half-prepared drain request
      io_uring: fix queueing half-created requests
      io-wq: ensure that hash wait lock is IRQ disabling
      io_uring: retry in case of short read on block device
      io_uring: IORING_OP_WRITE needs hash_reg_file set
      io-wq: fix race between adding work and activating a free worker
    60f8fbaa
io_uring.c 267 KB