When callers do not explicitly request read-only mode, pass open_flags as -1 (auto-detect) instead of hardcoding O_RDWR. This enables the existing O_RDWR-to-O_RDONLY retry logic in loop_device_make_by_path_at() which falls back to O_RDONLY when opening the backing device with O_RDWR fails with EROFS or similar errors. Previously, callers passed O_RDWR explicitly when read-only mode was not requested, which bypassed the retry logic entirely. This meant that inherently read-only block devices (such as CD-ROMs) would fail to open instead of gracefully falling back to read-only mode. Also propagate the unresolved open_flags through loop_device_make_by_path_at() into loop_device_make_internal() instead of resolving it to O_RDWR early. For loop_device_make_by_path_memory(), resolve to O_RDWR immediately since memfds are always writable. In mstack, switch from loop_device_make() to loop_device_make_by_path_at() with a NULL path, which reopens the O_PATH file descriptor with the appropriate access mode. This is necessary because the backing file descriptor is opened with O_PATH, which prevents loop_device_make_internal() from auto-detecting the access mode via fcntl(F_GETFL).
System and Service Manager
Details
Most documentation is available on systemd's web site.
Assorted, older, general information about systemd can be found in the systemd Wiki.
Information about build requirements is provided in the README file.
Consult our NEWS file for information about what's new in the most recent systemd versions.
Please see the Code Map for information about this repository's layout and content.
Please see the Hacking guide for information on how to hack on systemd and test your modifications.
Please see our Contribution Guidelines for more information about filing GitHub Issues and posting GitHub Pull Requests.
When preparing patches for systemd, please follow our Coding Style Guidelines.
If you are looking for support, please contact our mailing list, join our IRC channel #systemd on libera.chat or Matrix channel
Stable branches with backported patches are available in the stable repo.
We have a security bug bounty program sponsored by the Sovereign Tech Fund hosted on YesWeHack
Repositories with distribution packages built from git main are available on OBS, and also repositories with packages built from the latest stable release
