• 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
Name
Last commit
Last update
..
cache Loading commit data...
plugins Loading commit data...
AsyncInputStream.cxx Loading commit data...
AsyncInputStream.hxx Loading commit data...
BufferedInputStream.cxx Loading commit data...
BufferedInputStream.hxx Loading commit data...
BufferingInputStream.cxx Loading commit data...
BufferingInputStream.hxx Loading commit data...
CondHandler.hxx Loading commit data...
Error.cxx Loading commit data...
Error.hxx Loading commit data...
FailingInputStream.hxx Loading commit data...
Handler.hxx Loading commit data...
IcyInputStream.cxx Loading commit data...
IcyInputStream.hxx Loading commit data...
Init.cxx Loading commit data...
Init.hxx Loading commit data...
InputPlugin.cxx Loading commit data...
InputPlugin.hxx Loading commit data...
InputStream.cxx Loading commit data...
InputStream.hxx Loading commit data...
LocalOpen.cxx Loading commit data...
LocalOpen.hxx Loading commit data...
MaybeBufferedInputStream.cxx Loading commit data...
MaybeBufferedInputStream.hxx Loading commit data...
Offset.hxx Loading commit data...
Open.cxx Loading commit data...
ProxyInputStream.cxx Loading commit data...
ProxyInputStream.hxx Loading commit data...
Ptr.hxx Loading commit data...
Reader.cxx Loading commit data...
Reader.hxx Loading commit data...
Registry.cxx Loading commit data...
Registry.hxx Loading commit data...
RemoteTagScanner.hxx Loading commit data...
RewindInputStream.cxx Loading commit data...
RewindInputStream.hxx Loading commit data...
ScanTags.cxx Loading commit data...
ScanTags.hxx Loading commit data...
TextInputStream.cxx Loading commit data...
TextInputStream.hxx Loading commit data...
ThreadInputStream.cxx Loading commit data...
ThreadInputStream.hxx Loading commit data...
meson.build Loading commit data...