• Linus Torvalds's avatar
    Merge tag 'for-5.20/io_uring-2022-07-29' of git://git.kernel.dk/linux-block · b349b118
    Linus Torvalds authored
    Pull io_uring updates from Jens Axboe:
    
     - As per (valid) complaint in the last merge window, fs/io_uring.c has
       grown quite large these days. io_uring isn't really tied to fs
       either, as it supports a wide variety of functionality outside of
       that.
    
       Move the code to io_uring/ and split it into files that either
       implement a specific request type, and split some code into helpers
       as well. The code is organized a lot better like this, and io_uring.c
       is now < 4K LOC (me).
    
     - Deprecate the epoll_ctl opcode. It'll still work, just trigger a
       warning once if used. If we don't get any complaints on this, and I
       don't expect any, then we can fully remove it in a future release
       (me).
    
     - Improve the cancel hash locking (Hao)
    
     - kbuf cleanups (Hao)
    
     - Efficiency improvements to the task_work handling (Dylan, Pavel)
    
     - Provided buffer improvements (Dylan)
    
     - Add support for recv/recvmsg multishot support. This is similar to
       the accept (or poll) support for have for multishot, where a single
       SQE can trigger everytime data is received. For applications that
       expect to do more than a few receives on an instantiated socket, this
       greatly improves efficiency (Dylan).
    
     - Efficiency improvements for poll handling (Pavel)
    
     - Poll cancelation improvements (Pavel)
    
     - Allow specifiying a range for direct descriptor allocations (Pavel)
    
     - Cleanup the cqe32 handling (Pavel)
    
     - Move io_uring types to greatly cleanup the tracing (Pavel)
    
     - Tons of great code cleanups and improvements (Pavel)
    
     - Add a way to do sync cancelations rather than through the sqe -> cqe
       interface, as that's a lot easier to use for some use cases (me).
    
     - Add support to IORING_OP_MSG_RING for sending direct descriptors to a
       different ring. This avoids the usually problematic SCM case, as we
       disallow those. (me)
    
     - Make the per-command alloc cache we use for apoll generic, place
       limits on it, and use it for netmsg as well (me).
    
     - Various cleanups (me, Michal, Gustavo, Uros)
    
    * tag 'for-5.20/io_uring-2022-07-29' of git://git.kernel.dk/linux-block: (172 commits)
      io_uring: ensure REQ_F_ISREG is set async offload
      net: fix compat pointer in get_compat_msghdr()
      io_uring: Don't require reinitable percpu_ref
      io_uring: fix types in io_recvmsg_multishot_overflow
      io_uring: Use atomic_long_try_cmpxchg in __io_account_mem
      io_uring: support multishot in recvmsg
      net: copy from user before calling __get_compat_msghdr
      net: copy from user before calling __copy_msghdr
      io_uring: support 0 length iov in buffer select in compat
      io_uring: fix multishot ending when not polled
      io_uring: add netmsg cache
      io_uring: impose max limit on apoll cache
      io_uring: add abstraction around apoll cache
      io_uring: move apoll cache to poll.c
      io_uring: consolidate hash_locked io-wq handling
      io_uring: clear REQ_F_HASH_LOCKED on hash removal
      io_uring: don't race double poll setting REQ_F_ASYNC_DATA
      io_uring: don't miss setting REQ_F_DOUBLE_POLL
      io_uring: disable multishot recvmsg
      io_uring: only trace one of complete or overflow
      ...
    b349b118
MAINTAINERS 655 KB