chiark / gitweb /
shutdown: Don't skip bind mounts on shutdown
[elogind.git] / src / core / umount.c
index 71ad4b623d9ddcff8ef430cd72c5b4e7eea33a17..a5a215b2b55847aff7d6870ea9fa96b868169c45 100644 (file)
@@ -38,7 +38,6 @@
 typedef struct MountPoint {
         char *path;
         dev_t devnum;
-        bool skip_ro;
         LIST_FIELDS (struct MountPoint, mount_point);
 } MountPoint;
 
@@ -73,8 +72,6 @@ static int mount_points_list_get(MountPoint **head) {
         for (i = 1;; i++) {
                 int k;
                 MountPoint *m;
-                char *root;
-                bool skip_ro;
 
                 path = p = NULL;
 
@@ -82,7 +79,7 @@ static int mount_points_list_get(MountPoint **head) {
                                 "%*s "       /* (1) mount id */
                                 "%*s "       /* (2) parent id */
                                 "%*s "       /* (3) major:minor */
-                                "%ms "       /* (4) root */
+                                "%*s "       /* (4) root */
                                 "%ms "       /* (5) mount point */
                                 "%*s"        /* (6) mount options */
                                 "%*[^-]"     /* (7) optional fields */
@@ -91,8 +88,7 @@ static int mount_points_list_get(MountPoint **head) {
                                 "%*s"        /* (10) mount source */
                                 "%*s"        /* (11) mount options 2 */
                                 "%*[^\n]",   /* some rubbish at the end */
-                                &root,
-                                &path)) != 2) {
+                                &path)) != 1) {
                         if (k == EOF)
                                 break;
 
@@ -102,11 +98,6 @@ static int mount_points_list_get(MountPoint **head) {
                         continue;
                 }
 
-                /* If we encounter a bind mount, don't try to remount
-                 * the source dir too early */
-                skip_ro = !streq(root, "/");
-                free(root);
-
                 p = cunescape(path);
                 free(path);
 
@@ -132,7 +123,6 @@ static int mount_points_list_get(MountPoint **head) {
                 }
 
                 m->path = p;
-                m->skip_ro = skip_ro;
                 LIST_PREPEND(MountPoint, mount_point, *head, m);
         }
 
@@ -449,11 +439,6 @@ static int mount_points_list_remount_read_only(MountPoint **head, bool *changed)
 
         LIST_FOREACH_SAFE(mount_point, m, n, *head) {
 
-                if (m->skip_ro) {
-                        n_failed++;
-                        continue;
-                }
-
                 /* Trying to remount read-only */
                 if (mount(NULL, m->path, NULL, MS_MGC_VAL|MS_REMOUNT|MS_RDONLY, NULL) == 0) {
                         if (changed)