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).
This commit is contained in:
parent
c678406681
commit
bce93b7ac7
|
@ -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));
|
||||
|
|
|
@ -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++;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue