• Linus Torvalds's avatar
    Merge tag 'for-5.9/io_uring-20200802' of git://git.kernel.dk/linux-block · cdc8fcb4
    Linus Torvalds authored
    Pull io_uring updates from Jens Axboe:
     "Lots of cleanups in here, hardening the code and/or making it easier
      to read and fixing bugs, but a core feature/change too adding support
      for real async buffered reads. With the latter in place, we just need
      buffered write async support and we're done relying on kthreads for
      the fast path. In detail:
    
       - Cleanup how memory accounting is done on ring setup/free (Bijan)
    
       - sq array offset calculation fixup (Dmitry)
    
       - Consistently handle blocking off O_DIRECT submission path (me)
    
       - Support proper async buffered reads, instead of relying on kthread
         offload for that. This uses the page waitqueue to drive retries
         from task_work, like we handle poll based retry. (me)
    
       - IO completion optimizations (me)
    
       - Fix race with accounting and ring fd install (me)
    
       - Support EPOLLEXCLUSIVE (Jiufei)
    
       - Get rid of the io_kiocb unionizing, made possible by shrinking
         other bits (Pavel)
    
       - Completion side cleanups (Pavel)
    
       - Cleanup REQ_F_ flags handling, and kill off many of them (Pavel)
    
       - Request environment grabbing cleanups (Pavel)
    
       - File and socket read/write cleanups (Pavel)
    
       - Improve kiocb_set_rw_flags() (Pavel)
    
       - Tons of fixes and cleanups (Pavel)
    
       - IORING_SQ_NEED_WAKEUP clear fix (Xiaoguang)"
    
    * tag 'for-5.9/io_uring-20200802' of git://git.kernel.dk/linux-block: (127 commits)
      io_uring: flip if handling after io_setup_async_rw
      fs: optimise kiocb_set_rw_flags()
      io_uring: don't touch 'ctx' after installing file descriptor
      io_uring: get rid of atomic FAA for cq_timeouts
      io_uring: consolidate *_check_overflow accounting
      io_uring: fix stalled deferred requests
      io_uring: fix racy overflow count reporting
      io_uring: deduplicate __io_complete_rw()
      io_uring: de-unionise io_kiocb
      io-wq: update hash bits
      io_uring: fix missing io_queue_linked_timeout()
      io_uring: mark ->work uninitialised after cleanup
      io_uring: deduplicate io_grab_files() calls
      io_uring: don't do opcode prep twice
      io_uring: clear IORING_SQ_NEED_WAKEUP after executing task works
      io_uring: batch put_task_struct()
      tasks: add put_task_struct_many()
      io_uring: return locked and pinned page accounting
      io_uring: don't miscount pinned memory
      io_uring: don't open-code recv kbuf managment
      ...
    cdc8fcb4
io_uring.c 204 KB