1. 01 Jan, 2021 1 commit
  2. 23 Sep, 2020 1 commit
    • Max Kellermann's avatar
      input/uring: safe cancellation · 85bab670
      Max Kellermann authored
      My concept with `class CancellableOperation` doesn't work properly,
      because the kernel may continue to write to the given buffer as soon
      as the read finishes.
      
      To fix this, this commit adds `class ReadOperation` which owns the
      buffer and the `struct iovec`.  Instances of this class persist until
      the read really finishes, even if the operation is canceled.
      85bab670
  3. 14 Aug, 2020 1 commit
  4. 05 May, 2020 1 commit
    • Max Kellermann's avatar
      input/uring: new input plugin using io_uring · dae8da70
      Max Kellermann authored
      This is the final piece of the series to establish io_uring support on
      Linux.
      
      MPD doesn't need io_uring for its efficient bulk I/O support, but to
      allow file I/O to be cancelled.  This is a big problem on CIFS/NFS
      mounts where processes sleep uninterruptable if the file server
      disappears, deadlocking MPD.
      
      With io_uring, a flaky NFS connection allows MPD to continue to work
      (even though there are still deadlocks inside MPD which need to be
      addressed).
      
      This plugin does not yet use cancellable `open()` using
      `IORING_OP_OPENAT`.  This will be implemented later.
      
      Lots of other optimization opportunities for io_uring are still
      missing as well - for example the database update could benefit a lot,
      but unfortunately, io_uring doesn't have `readdir()` support just yet.
      dae8da70