summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHarald Hoyer <harald@redhat.com>2011-05-27 10:59:45 +0200
committerHarald Hoyer <harald@redhat.com>2011-07-04 12:47:50 +0200
commit31657718f5b7c39037f7b013c449100b9cf2dc21 (patch)
tree2859aedebb089aebd02d100f304f65d5267252c1
parent6f7f51f793e5f2a5d42e05e3f1e3101f49d37299 (diff)
umount: log failed umounts only once at the end
-rw-r--r--src/umount.c8
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;