summaryrefslogtreecommitdiff
path: root/src/core/mount.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2015-01-23 13:44:44 +0100
committerLennart Poettering <lennart@poettering.net>2015-01-23 13:47:41 +0100
commit874d3404cbf2363604106c8f86683db4082691ea (patch)
tree2e9c9d15321af1e6994209a64a559954638d9b8b /src/core/mount.c
parentb4d5b78374e093ffb280fbfbbcfedbe68d60b956 (diff)
core,shutdown: don't bother with unmounting any mounts below /sys, /proc, /dev when shutting down
After all, mounts below these directories are pretty much guaranteed to be virtual, and it's hence unnecessary to unmount them during shutdown. Moreover, in less-priviliged containers we might lack the rights to unmount them, hence don't even try. http://lists.freedesktop.org/archives/systemd-devel/2015-January/027113.html
Diffstat (limited to 'src/core/mount.c')
-rw-r--r--src/core/mount.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/core/mount.c b/src/core/mount.c
index 612d15077b..f944c02e2b 100644
--- a/src/core/mount.c
+++ b/src/core/mount.c
@@ -378,13 +378,20 @@ static int mount_add_default_dependencies(Mount *m) {
if (UNIT(m)->manager->running_as != SYSTEMD_SYSTEM)
return 0;
- p = get_mount_parameters(m);
-
- if (!p)
+ /* 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. */
+ if (path_equal(m->where, "/") ||
+ path_equal(m->where, "/usr") ||
+ path_startswith(m->where, "/proc") ||
+ path_startswith(m->where, "/sys") ||
+ path_startswith(m->where, "/dev"))
return 0;
- if (path_equal(m->where, "/") ||
- path_equal(m->where, "/usr"))
+ p = get_mount_parameters(m);
+ if (!p)
return 0;
if (mount_is_network(p)) {