• Linus Torvalds's avatar
    Merge tag 'for-5.5/io_uring-20191121' of git://git.kernel.dk/linux-block · fb4b3d3f
    Linus Torvalds authored
    Pull io_uring updates from Jens Axboe:
     "A lot of stuff has been going on this cycle, with improving the
      support for networked IO (and hence unbounded request completion
      times) being one of the major themes. There's been a set of fixes done
      this week, I'll send those out as well once we're certain we're fully
      happy with them.
    
      This contains:
    
       - Unification of the "normal" submit path and the SQPOLL path (Pavel)
    
       - Support for sparse (and bigger) file sets, and updating of those
         file sets without needing to unregister/register again.
    
       - Independently sized CQ ring, instead of just making it always 2x
         the SQ ring size. This makes it more flexible for networked
         applications.
    
       - Support for overflowed CQ ring, never dropping events but providing
         backpressure on submits.
    
       - Add support for absolute timeouts, not just relative ones.
    
       - Support for generic cancellations. This divorces io_uring from
         workqueues as well, which additionally gets us one step closer to
         generic async system call support.
    
       - With cancellations, we can support grabbing the process file table
         as well, just like we do mm context. This allows support for system
         calls that create file descriptors, like accept4() support that's
         built on top of that.
    
       - Support for io_uring tracing (Dmitrii)
    
       - Support for linked timeouts. These abort an operation if it isn't
         completed by the time noted in the linke timeout.
    
       - Speedup tracking of poll requests
    
       - Various cleanups making the coder easier to follow (Jackie, Pavel,
         Bob, YueHaibing, me)
    
       - Update MAINTAINERS with new io_uring list"
    
    * tag 'for-5.5/io_uring-20191121' of git://git.kernel.dk/linux-block: (64 commits)
      io_uring: make POLL_ADD/POLL_REMOVE scale better
      io-wq: remove now redundant struct io_wq_nulls_list
      io_uring: Fix getting file for non-fd opcodes
      io_uring: introduce req_need_defer()
      io_uring: clean up io_uring_cancel_files()
      io-wq: ensure free/busy list browsing see all items
      io-wq: ensure we have a stable view of ->cur_work for cancellations
      io_wq: add get/put_work handlers to io_wq_create()
      io_uring: check for validity of ->rings in teardown
      io_uring: fix potential deadlock in io_poll_wake()
      io_uring: use correct "is IO worker" helper
      io_uring: fix -ENOENT issue with linked timer with short timeout
      io_uring: don't do flush cancel under inflight_lock
      io_uring: flag SQPOLL busy condition to userspace
      io_uring: make ASYNC_CANCEL work with poll and timeout
      io_uring: provide fallback request for OOM situations
      io_uring: convert accept4() -ERESTARTSYS into -EINTR
      io_uring: fix error clear of ->file_table in io_sqe_files_register()
      io_uring: separate the io_free_req and io_free_req_find_next interface
      io_uring: keep io_put_req only responsible for release and put req
      ...
    fb4b3d3f
io_uring.c 116 KB