diff options
author | Harald Hoyer <harald@redhat.com> | 2011-05-27 10:59:45 +0200 |
---|---|---|
committer | Harald Hoyer <harald@redhat.com> | 2011-07-04 12:47:50 +0200 |
commit | 31657718f5b7c39037f7b013c449100b9cf2dc21 (patch) | |
tree | 2859aedebb089aebd02d100f304f65d5267252c1 | |
parent | 6f7f51f793e5f2a5d42e05e3f1e3101f49d37299 (diff) |
umount: log failed umounts only once at the end
-rw-r--r-- | src/umount.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/umount.c b/src/umount.c index 20db612ace..67be42ea33 100644 --- a/src/umount.c +++ b/src/umount.c @@ -403,7 +403,7 @@ static int delete_dm(dev_t devnum) { return r >= 0 ? 0 : -errno; } -static int mount_points_list_umount(MountPoint **head, bool *changed) { +static int mount_points_list_umount(MountPoint **head, bool *changed, bool log_error) { MountPoint *m, *n; int n_failed = 0; @@ -422,7 +422,7 @@ static int mount_points_list_umount(MountPoint **head, bool *changed) { *changed = true; mount_point_free(head, m); - } else { + } else if (log_error) { log_warning("Could not unmount %s: %m", m->path); n_failed++; } @@ -565,10 +565,12 @@ int umount_all(bool *changed) { /* retry umount, until nothing can be umounted anymore */ do { umount_changed = false; - r = mount_points_list_umount(&mp_list_head, &umount_changed); + r = mount_points_list_umount(&mp_list_head, &umount_changed, false); if (umount_changed) *changed = true; } while(umount_changed); + /* umount one more time with logging enabled */ + r = mount_points_list_umount(&mp_list_head, &umount_changed, true); if (r <= 0) goto end; |