Hi, On Wed, Apr 25, 2012 at 9:46 AM, Daniel Drake <d...@laptop.org> wrote: > This reverts commits d72238fcb34abc81aca97c5fb15888708ee937d3 and > f3accc08. > > OLPC runs / as a bind-mount, so this must be remounted RO during > shutdown to avoid corruption. > > As Lennert can't recall the exact reasons for making the shutdown > code skip bind mounts, revert to previous behaviour to solve the > issue for OLPC. > > http://lists.freedesktop.org/archives/systemd-devel/2012-April/004957.html
Any news on this patch? Thanks Daniel > --- > src/core/umount.c | 19 ++----------------- > 1 file changed, 2 insertions(+), 17 deletions(-) > > diff --git a/src/core/umount.c b/src/core/umount.c > index 488e1e4..85b7824 100644 > --- a/src/core/umount.c > +++ b/src/core/umount.c > @@ -37,7 +37,6 @@ > typedef struct MountPoint { > char *path; > dev_t devnum; > - bool skip_ro; > LIST_FIELDS (struct MountPoint, mount_point); > } MountPoint; > > @@ -72,8 +71,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; > > @@ -81,7 +78,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 */ > @@ -90,8 +87,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; > > @@ -101,11 +97,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); > > @@ -131,7 +122,6 @@ static int mount_points_list_get(MountPoint **head) { > } > > m->path = p; > - m->skip_ro = skip_ro; > LIST_PREPEND(MountPoint, mount_point, *head, m); > } > > @@ -448,11 +438,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) > -- > 1.7.10 _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel