chiark / gitweb /
shutdown: in the final umount loop don't use MNT_FORCE
authorLennart Poettering <lennart@poettering.net>
Wed, 16 Jan 2013 02:51:56 +0000 (03:51 +0100)
committerLennart Poettering <lennart@poettering.net>
Wed, 16 Jan 2013 03:03:57 +0000 (04:03 +0100)
MNT_FORCE is honoured by NFS and FUSE and allows unmounting of the FS
even if consumers still use it. For our brute-force loop we rely on
EBUSY being reported as long as a file system is still used by a
loopback device or suchlike. Hence, drop MNT_FORCE to make EBUSY
reliable.

src/core/umount.c

index 96232d38dba51c97e2a60f51d868051e8a6678da..c7b6cee07975db037d56c1c6ec0d96f2db2a38ae 100644 (file)
@@ -442,9 +442,11 @@ 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) */
+                /* 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);
-                if (umount2(m->path, MNT_FORCE) == 0) {
+                if (umount2(m->path, 0) == 0) {
                         if (changed)
                                 *changed = true;