From: Harald Hoyer <har...@redhat.com> --- src/umount.c | 10 +++++++++- 1 files changed, 9 insertions(+), 1 deletions(-)
diff --git a/src/umount.c b/src/umount.c index 3d328e0..31e91ec 100644 --- a/src/umount.c +++ b/src/umount.c @@ -551,6 +551,8 @@ static int dm_points_list_detach(MountPoint **head, bool *changed) { int umount_all(bool *changed) { int r; + bool umount_changed; + LIST_HEAD(MountPoint, mp_list_head); LIST_HEAD_INIT(MountPoint, mp_list_head); @@ -559,7 +561,13 @@ int umount_all(bool *changed) { if (r < 0) goto end; - r = mount_points_list_umount(&mp_list_head, changed); + /* retry umount, until nothing can be umounted anymore */ + do { + umount_changed = false; + r = mount_points_list_umount(&mp_list_head, &umount_changed); + if (umount_changed) + *changed = true; + } while(umount_changed); if (r <= 0) goto end; -- 1.7.3.4 _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel