mirror of
https://github.com/systemd/systemd.git
synced 2024-11-07 01:27:11 +03:00
core/mount: Don't unmount initramfs mounts
A mount within /run/initramfs is indicative that the mount was created by initramfs init and will be unmounted by initramfs shutdown. It is unlikely that such a mount point would even be unmountable by the the main system, for example in the case of the root file- system being loop-mounted from a file in a /run/initramfs mount.
This commit is contained in:
parent
9f0cd100d0
commit
04a9393122
@ -369,7 +369,8 @@ static bool should_umount(Mount *m) {
|
||||
MountParameters *p;
|
||||
|
||||
if (path_equal(m->where, "/") ||
|
||||
path_equal(m->where, "/usr"))
|
||||
path_equal(m->where, "/usr") ||
|
||||
path_startswith(m->where, "/run/initramfs"))
|
||||
return false;
|
||||
|
||||
p = get_mount_parameters(m);
|
||||
@ -393,13 +394,15 @@ static int mount_add_default_dependencies(Mount *m) {
|
||||
if (UNIT(m)->manager->running_as != MANAGER_SYSTEM)
|
||||
return 0;
|
||||
|
||||
/* We do not add any default dependencies to / and /usr, since
|
||||
* they are guaranteed to stay mounted the whole time, since
|
||||
* our system is on it. Also, don't bother with anything
|
||||
* mounted below virtual file systems, it's also going to be
|
||||
* virtual, and hence not worth the effort. */
|
||||
/* We do not add any default dependencies to /, /usr or
|
||||
* /run/initramfs/, since they are guaranteed to stay
|
||||
* mounted the whole time, since our system is on it.
|
||||
* Also, don't bother with anything mounted below virtual
|
||||
* file systems, it's also going to be virtual, and hence
|
||||
* not worth the effort. */
|
||||
if (path_equal(m->where, "/") ||
|
||||
path_equal(m->where, "/usr") ||
|
||||
path_startswith(m->where, "/run/initramfs") ||
|
||||
path_startswith(m->where, "/proc") ||
|
||||
path_startswith(m->where, "/sys") ||
|
||||
path_startswith(m->where, "/dev"))
|
||||
|
@ -412,6 +412,7 @@ static int mount_points_list_umount(MountPoint **head, bool *changed, bool log_e
|
||||
#ifndef HAVE_SPLIT_USR
|
||||
|| path_equal(m->path, "/usr")
|
||||
#endif
|
||||
|| path_startswith(m->path, "/run/initramfs")
|
||||
)
|
||||
continue;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user