e5b422034160937712fe7a546f175b883e39e763
Let's follow symlinks before invoking mount() on arbitrary paths, so that we won't get confused if directories are prepared with absolute symlinks. Use FOREACH_STRING() instead of NULSTR_FOREACH() as it is more readable. Don't use snprintf() for concatenating strings, let chase_symlinks() to that. Replace homegrown mount check with path_is_mount_point(). Also, change the behaviour when we encounter this: instead of unmounting the old mount point, simply leave it around and don't replace it, so that initrds can mount stuff there with different settings than we would apply. This is in-line with how we handle automatic mounts in nspawn for example. Use umount_recursive() instead of a simple umount2() for unmounting the old root, so that we actually cover really all mounts, not just the top-level one.
systemd - System and Service Manager
Details
General information about systemd can be found in the systemd Wiki.
Information about build requirements are provided in the README file.
Consult our NEWS file for information about what's new in the most recent systemd versions.
Please see the HACKING file for information 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 or join our IRC channel.
Languages
C
88.5%
Shell
5.7%
Python
4.6%
Meson
1.1%