chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
getty: simplify things a bit
[elogind.git]
/
src
/
umount.c
diff --git
a/src/umount.c
b/src/umount.c
index 20db612ace8d11e2eea2e6796ade9c4a29212b6f..67be42ea337397b57ec3f045f0a8425765a2a526 100644
(file)
--- a/
src/umount.c
+++ b/
src/umount.c
@@
-403,7
+403,7
@@
static int delete_dm(dev_t devnum) {
return r >= 0 ? 0 : -errno;
}
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;
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);
*changed = true;
mount_point_free(head, m);
- } else {
+ } else
if (log_error)
{
log_warning("Could not unmount %s: %m", m->path);
n_failed++;
}
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;
/* 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);
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;
if (r <= 0)
goto end;