chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
shutdown: loop - convert to enumerate match
[elogind.git]
/
src
/
core
/
umount.c
diff --git
a/src/core/umount.c
b/src/core/umount.c
index fd90d9f4048bbda7fa83e2918448a32684f073d2..3fcb90eca4d9219e128cca90c957b668ffd15b04 100644
(file)
--- a/
src/core/umount.c
+++ b/
src/core/umount.c
@@
-219,7
+219,8
@@
static int loopback_list_get(MountPoint **head) {
}
if (udev_enumerate_add_match_subsystem(e, "block") < 0 ||
}
if (udev_enumerate_add_match_subsystem(e, "block") < 0 ||
- udev_enumerate_add_match_sysname(e, "loop*") < 0) {
+ udev_enumerate_add_match_sysname(e, "loop*") < 0 ||
+ udev_enumerate_add_match_sysattr(e, "loop/backing_file", NULL) < 0) {
r = -EIO;
goto finish;
}
r = -EIO;
goto finish;
}
@@
-442,9
+443,11
@@
static int mount_points_list_umount(MountPoint **head, bool *changed, bool log_e
)
continue;
)
continue;
- /* Trying to umount. Forcing to umount if busy (only for NFS mounts) */
+ /* Trying to umount. We don't force here since we rely
+ * on busy NFS and FUSE file systems to return EBUSY
+ * until we closed everything on top of them. */
log_info("Unmounting %s.", m->path);
log_info("Unmounting %s.", m->path);
- if (umount2(m->path,
MNT_FORCE
) == 0) {
+ if (umount2(m->path,
0
) == 0) {
if (changed)
*changed = true;
if (changed)
*changed = true;
@@
-465,7
+468,7
@@
static int swap_points_list_off(MountPoint **head, bool *changed) {
assert(head);
LIST_FOREACH_SAFE(mount_point, m, n, *head) {
assert(head);
LIST_FOREACH_SAFE(mount_point, m, n, *head) {
- log_info("D
isabl
ing swap %s.", m->path);
+ log_info("D
eactivat
ing swap %s.", m->path);
if (swapoff(m->path) == 0) {
if (changed)
*changed = true;
if (swapoff(m->path) == 0) {
if (changed)
*changed = true;
@@
-501,7
+504,7
@@
static int loopback_points_list_detach(MountPoint **head, bool *changed) {
continue;
}
continue;
}
- log_info("De
let
ing loopback %s.", m->path);
+ log_info("De
tach
ing loopback %s.", m->path);
r = delete_loopback(m->path);
if (r >= 0) {
if (r > 0 && changed)
r = delete_loopback(m->path);
if (r >= 0) {
if (r > 0 && changed)
@@
-509,7
+512,7
@@
static int loopback_points_list_detach(MountPoint **head, bool *changed) {
mount_point_free(head, m);
} else {
mount_point_free(head, m);
} else {
- log_warning("Could not de
lete
loopback %s: %m", m->path);
+ log_warning("Could not de
tach
loopback %s: %m", m->path);
n_failed++;
}
}
n_failed++;
}
}
@@
-536,7
+539,7
@@
static int dm_points_list_detach(MountPoint **head, bool *changed) {
continue;
}
continue;
}
- log_info("De
let
ing DM %u:%u.", major(m->devnum), minor(m->devnum));
+ log_info("De
tach
ing DM %u:%u.", major(m->devnum), minor(m->devnum));
r = delete_dm(m->devnum);
if (r >= 0) {
if (changed)
r = delete_dm(m->devnum);
if (r >= 0) {
if (changed)
@@
-544,7
+547,7
@@
static int dm_points_list_detach(MountPoint **head, bool *changed) {
mount_point_free(head, m);
} else {
mount_point_free(head, m);
} else {
- log_warning("Could not de
lete
DM %s: %m", m->path);
+ log_warning("Could not de
tach
DM %s: %m", m->path);
n_failed++;
}
}
n_failed++;
}
}