]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
umount: read mountinfo if --detach-loop given
authorRobert Schiele <rschiele@gmail.com>
Thu, 18 Sep 2014 06:09:59 +0000 (08:09 +0200)
committerKarel Zak <kzak@redhat.com>
Mon, 22 Sep 2014 10:53:57 +0000 (12:53 +0200)
Don't use the optimization not to read mountinfo from commit
6a52473ecd877227f6f7da2b95da0b51593ffec1 if --detach-loop was given
since we need the name of the loop device in that case and with the
optimization this is not present and thus the detach operation
obviously fails.

Signed-off-by: Robert Schiele <rschiele@gmail.com>
libmount/src/context_umount.c

index 73e8214c8a721aaa547393d3364871296c40c2c6..6c1d9a2f4aa5b3f4bbd4e35cfbb9516bc01f5ca5 100644 (file)
@@ -254,7 +254,8 @@ static int lookup_umount_fs(struct libmnt_context *cxt)
         * options for the target (e.g. helper=udisks to call /sbin/umount.udisks).
         *
         * So, let's use statfs() if possible (it's bad idea for --lazy/--force
-        * umounts as target is probably unreachable NFS).
+        * umounts as target is probably unreachable NFS, also for --detach-loop
+        * as this additionally needs to know the name of the loop device).
         */
        if (!mnt_context_is_restricted(cxt)
            && *tgt == '/'
@@ -262,6 +263,7 @@ static int lookup_umount_fs(struct libmnt_context *cxt)
            && !mnt_context_mtab_writable(cxt)
            && !mnt_context_is_force(cxt)
            && !mnt_context_is_lazy(cxt)
+           && !mnt_context_is_loopdel(cxt)
            && stat(tgt, &st) == 0 && S_ISDIR(st.st_mode)
            && !has_utab_entry(cxt, tgt)) {