chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
manager: print p and then free it
[elogind.git]
/
src
/
core
/
umount.c
diff --git
a/src/core/umount.c
b/src/core/umount.c
index 96232d38dba51c97e2a60f51d868051e8a6678da..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;