From 2569a5ce16638d99f1ebaaa7774d183496d8b8e8 Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Fri, 7 Dec 2012 17:28:30 +0100 Subject: [PATCH] shutdown: downgrade a warning All messages of the kind "not all done, %d left" are log_info, except the one for DM devices. Make it info too. --- src/core/shutdown.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/shutdown.c b/src/core/shutdown.c index 4bb4b4d..192746a 100644 --- a/src/core/shutdown.c +++ b/src/core/shutdown.c @@ -233,7 +233,7 @@ int main(int argc, char *argv[]) { if (r == 0) need_dm_detach = false; else if (r > 0) - log_warning("Not all DM devices detached, %d left.", r); + log_info("Not all DM devices detached, %d left.", r); else log_error("Failed to detach DM devices: %s", strerror(-r)); } -- 1.7.10.4 From c678406681d32d56730b9e9c002d5500d7aa7f8b Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Fri, 7 Dec 2012 17:34:21 +0100 Subject: [PATCH] umount: fix check for DM changed delete_dm() returns 0 on success. The check for "r > 0" was likely a copy&paste error from the loopback code where "r > 0" makes sense. --- src/core/umount.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/umount.c b/src/core/umount.c index f6c520e..8776807 100644 --- a/src/core/umount.c +++ b/src/core/umount.c @@ -536,7 +536,7 @@ static int dm_points_list_detach(MountPoint **head, bool *changed) { if ((r = delete_dm(m->devnum)) >= 0) { - if (r > 0 && changed) + if (changed) *changed = true; mount_point_free(head, m); -- 1.7.10.4 From bce93b7ac7642426039863493694d8c12812e2a7 Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Fri, 7 Dec 2012 17:44:50 +0100 Subject: [PATCH] shutdown, umount: logging improvements In bugreports about hangs during the late shutdown we are often missing important information - what were we trying to unmount/detach when it hung. Instead of printing what we successfully unmounted, print what we are going to unmount/detach. And add messages to mark the completion of categories (mount/swap/loop/DM). --- src/core/shutdown.c | 20 ++++++++++++-------- src/core/umount.c | 15 +++++++++------ 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/src/core/shutdown.c b/src/core/shutdown.c index 192746a..6783008 100644 --- a/src/core/shutdown.c +++ b/src/core/shutdown.c @@ -197,9 +197,10 @@ int main(int argc, char *argv[]) { if (need_umount) { log_info("Unmounting file systems."); r = umount_all(&changed); - if (r == 0) + if (r == 0) { need_umount = false; - else if (r > 0) + log_info("All filesystems unmounted."); + } else if (r > 0) log_info("Not all file systems unmounted, %d left.", r); else log_error("Failed to unmount file systems: %s", strerror(-r)); @@ -208,9 +209,10 @@ int main(int argc, char *argv[]) { if (need_swapoff) { log_info("Disabling swaps."); r = swapoff_all(&changed); - if (r == 0) + if (r == 0) { need_swapoff = false; - else if (r > 0) + log_info("All swaps disabled."); + } else if (r > 0) log_info("Not all swaps are turned off, %d left.", r); else log_error("Failed to turn off swaps: %s", strerror(-r)); @@ -219,9 +221,10 @@ int main(int argc, char *argv[]) { if (need_loop_detach) { log_info("Detaching loop devices."); r = loopback_detach_all(&changed); - if (r == 0) + if (r == 0) { need_loop_detach = false; - else if (r > 0) + log_info("All loop devices detached."); + } else if (r > 0) log_info("Not all loop devices detached, %d left.", r); else log_error("Failed to detach loop devices: %s", strerror(-r)); @@ -230,9 +233,10 @@ int main(int argc, char *argv[]) { if (need_dm_detach) { log_info("Detaching DM devices."); r = dm_detach_all(&changed); - if (r == 0) + if (r == 0) { need_dm_detach = false; - else if (r > 0) + log_info("All DM devices detached."); + } else if (r > 0) log_info("Not all DM devices detached, %d left.", r); else log_error("Failed to detach DM devices: %s", strerror(-r)); diff --git a/src/core/umount.c b/src/core/umount.c index 8776807..fd90d9f 100644 --- a/src/core/umount.c +++ b/src/core/umount.c @@ -443,8 +443,8 @@ static int mount_points_list_umount(MountPoint **head, bool *changed, bool log_e continue; /* Trying to umount. Forcing to umount if busy (only for NFS mounts) */ + log_info("Unmounting %s.", m->path); if (umount2(m->path, MNT_FORCE) == 0) { - log_info("Unmounted %s.", m->path); if (changed) *changed = true; @@ -465,6 +465,7 @@ static int swap_points_list_off(MountPoint **head, bool *changed) { assert(head); LIST_FOREACH_SAFE(mount_point, m, n, *head) { + log_info("Disabling swap %s.", m->path); if (swapoff(m->path) == 0) { if (changed) *changed = true; @@ -500,8 +501,9 @@ static int loopback_points_list_detach(MountPoint **head, bool *changed) { continue; } - if ((r = delete_loopback(m->path)) >= 0) { - + log_info("Deleting loopback %s.", m->path); + r = delete_loopback(m->path); + if (r >= 0) { if (r > 0 && changed) *changed = true; @@ -534,14 +536,15 @@ static int dm_points_list_detach(MountPoint **head, bool *changed) { continue; } - if ((r = delete_dm(m->devnum)) >= 0) { - + log_info("Deleting DM %u:%u.", major(m->devnum), minor(m->devnum)); + r = delete_dm(m->devnum); + if (r >= 0) { if (changed) *changed = true; mount_point_free(head, m); } else { - log_warning("Could not delete dm %s: %m", m->path); + log_warning("Could not delete DM %s: %m", m->path); n_failed++; } } -- 1.7.10.4 From 735e0712710a1dc26da0febafb91b242b2687f3f Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Fri, 7 Dec 2012 18:02:43 +0100 Subject: [PATCH] shutdown, umount: use verbs consistently Mounts are "unmounted". Swaps are "deactivated", not "turned off" nor "disabled". Loop and DM devices are "detached", not "deleted". Especially the deleting sounded a bit scary. --- src/core/shutdown.c | 8 ++++---- src/core/umount.c | 10 +++++----- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/core/shutdown.c b/src/core/shutdown.c index 6783008..0b0e0c3 100644 --- a/src/core/shutdown.c +++ b/src/core/shutdown.c @@ -207,15 +207,15 @@ int main(int argc, char *argv[]) { } if (need_swapoff) { - log_info("Disabling swaps."); + log_info("Deactivating swaps."); r = swapoff_all(&changed); if (r == 0) { need_swapoff = false; - log_info("All swaps disabled."); + log_info("All swaps deactivated."); } else if (r > 0) - log_info("Not all swaps are turned off, %d left.", r); + log_info("Not all swaps deactivated, %d left.", r); else - log_error("Failed to turn off swaps: %s", strerror(-r)); + log_error("Failed to deactivate swaps: %s", strerror(-r)); } if (need_loop_detach) { diff --git a/src/core/umount.c b/src/core/umount.c index fd90d9f..96232d3 100644 --- a/src/core/umount.c +++ b/src/core/umount.c @@ -465,7 +465,7 @@ static int swap_points_list_off(MountPoint **head, bool *changed) { assert(head); LIST_FOREACH_SAFE(mount_point, m, n, *head) { - log_info("Disabling swap %s.", m->path); + log_info("Deactivating swap %s.", m->path); if (swapoff(m->path) == 0) { if (changed) *changed = true; @@ -501,7 +501,7 @@ static int loopback_points_list_detach(MountPoint **head, bool *changed) { continue; } - log_info("Deleting loopback %s.", m->path); + log_info("Detaching loopback %s.", m->path); r = delete_loopback(m->path); if (r >= 0) { if (r > 0 && changed) @@ -509,7 +509,7 @@ static int loopback_points_list_detach(MountPoint **head, bool *changed) { mount_point_free(head, m); } else { - log_warning("Could not delete loopback %s: %m", m->path); + log_warning("Could not detach loopback %s: %m", m->path); n_failed++; } } @@ -536,7 +536,7 @@ static int dm_points_list_detach(MountPoint **head, bool *changed) { continue; } - log_info("Deleting DM %u:%u.", major(m->devnum), minor(m->devnum)); + log_info("Detaching DM %u:%u.", major(m->devnum), minor(m->devnum)); r = delete_dm(m->devnum); if (r >= 0) { if (changed) @@ -544,7 +544,7 @@ static int dm_points_list_detach(MountPoint **head, bool *changed) { mount_point_free(head, m); } else { - log_warning("Could not delete DM %s: %m", m->path); + log_warning("Could not detach DM %s: %m", m->path); n_failed++; } } -- 1.7.10.4