]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
libmount: detach loopdev on umount if loop option in mtab
authorKarel Zak <kzak@redhat.com>
Tue, 18 Sep 2012 09:22:17 +0000 (11:22 +0200)
committerKarel Zak <kzak@redhat.com>
Tue, 18 Sep 2012 09:22:17 +0000 (11:22 +0200)
[chroot-i486] root:/$ mount --version
mount from util-linux 2.22 (libmount 2.22.0: debug)
[chroot-i486] root:/$ losetup -a
[chroot-i486] root:/$ mount -oloop /tmp/foo_fs /tmp/bar_dir
[chroot-i486] root:/$ umount /tmp/foo_fs
[chroot-i486] root:/$ losetup -a
/dev/loop0: [2051]:387175 (/tmp/foo_fs)

Reported-by: g.esp@free.fr
Signed-off-by: Karel Zak <kzak@redhat.com>
libmount/src/context_umount.c

index 2c2975e7ead53222790449cbf1fc7f440bfa7a1f..36ed435cf508fb212f8dc83c0adf19bdc2469d03 100644 (file)
@@ -616,6 +616,10 @@ int mnt_context_prepare_umount(struct libmnt_context *cxt)
                        rc = mnt_context_prepare_helper(cxt, "umount", NULL);
        }
 
+       if (!rc && (cxt->user_mountflags & MNT_MS_LOOP))
+               /* loop option explicitly specified in mtab, detach this loop */
+               mnt_context_enable_loopdel(cxt, TRUE);
+
        if (!rc && mnt_context_is_loopdel(cxt) && cxt->fs) {
                const char *src = mnt_fs_get_srcpath(cxt->fs);