]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
libmount: don't setup new loopdev on remount with regular mtab
authorKarel Zak <kzak@redhat.com>
Wed, 26 Sep 2012 09:25:01 +0000 (11:25 +0200)
committerKarel Zak <kzak@redhat.com>
Wed, 26 Sep 2012 09:25:01 +0000 (11:25 +0200)
[chroot-i486] root:/tmp$ mount -oloop /tmp/blob /tmp/mnt
[chroot-i486] root:/tmp$ mount -o remount,loop,ro /tmp/mnt
[chroot-i486] root:/tmp$ mount
/dev/loop0 on /tmp/mnt type ext2 (ro,loop)
[chroot-i486] root:/tmp$ losetup -a
/dev/loop0: [2051]:306957 (/tmp/blob)
/dev/loop1: [0005]:2218 (/dev/loop0)
[chroot-i486] root:/tmp$ umount /tmp/mnt
umount: /tmp/mnt: filesystem umounted, but mount(8) failed: Device or
resource busy
[chroot-i486] root:/tmp$ losetup -d /dev/loop1
[chroot-i486] root:/tmp$ losetup -d /dev/loop0

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

index d10afa36df74bee29e67b434a69f8d7d41436baa..97cba72a3333a9b57d0685ca64982a2d8b570cb1 100644 (file)
@@ -1342,9 +1342,9 @@ int mnt_context_prepare_srcpath(struct libmnt_context *cxt)
        if (!path)
                path = src;
 
-       if ((cxt->mountflags & (MS_BIND | MS_MOVE | MS_PROPAGATION)) ||
+       if ((cxt->mountflags & (MS_BIND | MS_MOVE | MS_PROPAGATION | MS_REMOUNT)) ||
            mnt_fs_is_pseudofs(cxt->fs)) {
-               DBG(CXT, mnt_debug_h(cxt, "BIND/MOVE/pseudo FS source: %s", path));
+               DBG(CXT, mnt_debug_h(cxt, "REMOUNT/BIND/MOVE/pseudo FS source: %s", path));
                return rc;
        }