- 05 May, 2020 12 commits
-
-
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.
-
Max Kellermann authored
-
Max Kellermann authored
-
Max Kellermann authored
Relax the assertions. This is necessary if BlockingCall() is used before the thread is started.
-
Max Kellermann authored
-
Max Kellermann authored
-
Max Kellermann authored
-
Max Kellermann authored
This makes ccache more efficient when recompiling with different plugins.
-
Max Kellermann authored
-
Max Kellermann authored
-
Max Kellermann authored
-
Max Kellermann authored
-
- 30 Apr, 2020 1 commit
-
-
skidoo23 authored
-
- 29 Apr, 2020 1 commit
-
-
skidoo23 authored
-
- 27 Apr, 2020 3 commits
-
-
Sören Tempel authored
The parser implemented in libmpdclient requires the first key-value pair of the server response to be the file pair. This is due to the fact that libmpdclient scan pairs sequentially and first attempts to extract the file pair before parsing the currentsong response further. See: https://github.com/MusicPlayerDaemon/libmpdclient/blob/5c751a761ec9f71a43ee0e41cfff3208f31a58b8/src/song.c#L559-L563 Meta data encoded as pairs in the currentsong response will be ignored if they are placed before the file pair in the response.
-
Max Kellermann authored
Fixes breakage of non-ASCII characters, regression from commit cc72ceb3 Fixes https://github.com/MusicPlayerDaemon/MPD/issues/842
-
Max Kellermann authored
Prepare to fix cc72ceb3
-
- 26 Apr, 2020 2 commits
-
-
John Regan authored
-
John Regan authored
Also include fade-out time in song length.
-
- 24 Apr, 2020 8 commits
-
-
Max Kellermann authored
Closes https://github.com/MusicPlayerDaemon/MPD/issues/838
-
Max Kellermann authored
-
Max Kellermann authored
-
Max Kellermann authored
This reduces resource waste for resizing the std::vector in most cases.
-
Max Kellermann authored
-
Max Kellermann authored
-
Max Kellermann authored
Optimizes a few nanoseconds from the common code path.
-
Max Kellermann authored
-
- 23 Apr, 2020 13 commits
-
-
Naglis Jonaitis authored
-
Max Kellermann authored
release v0.21.23
-
Max Kellermann authored
-
Max Kellermann authored
libnfs is compiled with `-D_FILE_OFFSET_BITS=64`, but Meson decides not to enable this mode. We could force this mode, but then again, these days, nobody should be using 32-bit Windows ... so this is a kludge only for debugging with 32-bit WINE.
-
Max Kellermann authored
Fixes Path::IsNull() checks on Windows.
-
Max Kellermann authored
-
Max Kellermann authored
This fixes a freeze bug in the NFS input/storage plugins: when libnfs auto-reconnets after a failure, it installs the new socket on the same file descriptor number. MPD's attempt to unregister the old socket by calling SocketMonitor::Steal() from NfsConnection::ScheduleSocket() fails because the new/old socket number is not registered in epoll, so epoll_ctl() returns ENOENT. The problem is that it left `scheduled_flags`, and so subsequent Schedule() calls will use `EPOLL_CTL_MOD`, which will fail again and again. Instead, we need to use `EPOLL_CTL_ADD` to register the new socket. Closes https://github.com/MusicPlayerDaemon/MPD/issues/806 Closes https://github.com/MusicPlayerDaemon/MPD/issues/756
-
Max Kellermann authored
This flag is output-only.
-
Max Kellermann authored
These flags are output-only.
-
Max Kellermann authored
These flags are output-only. Using them here is misleading.
-
Max Kellermann authored
-
Max Kellermann authored
The object's state is `IDLE` when OnNfsCallback() gets invoked, so let's use the start of the method to reset the `state` field.
-
Max Kellermann authored
Fixes assertion failure if the callback fails.
-