summaryrefslogtreecommitdiff
path: root/src/core/umount.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/umount.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/umount.c')
-rw-r--r--src/core/umount.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/core/umount.c b/src/core/umount.c
index e38851dc12..dd7df194de 100644
--- a/src/core/umount.c
+++ b/src/core/umount.c
@@ -104,10 +104,16 @@ static int mount_points_list_get(MountPoint **head) {
/* Ignore mount points we can't unmount because they
* are API or because we are keeping them open (like
- * /dev/console) */
+ * /dev/console). Also, ignore all mounts below API
+ * file systems, since they are likely virtual too,
+ * and hence not worth spending time on. Also, in
+ * unprivileged containers we might lack the rights to
+ * unmount these things, hence don't bother. */
if (mount_point_is_api(p) ||
mount_point_ignore(p) ||
- path_equal(p, "/dev/console")) {
+ path_startswith(p, "/dev") ||
+ path_startswith(p, "/sys") ||
+ path_startswith(p, "/proc")) {
free(p);
continue;
}