• 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
UringInputPlugin.cxx 4.6 KB