From: Karel Zak Date: Wed, 26 Sep 2012 09:25:01 +0000 (+0200) Subject: libmount: don't setup new loopdev on remount with regular mtab X-Git-Tag: v2.23-rc1~677 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1ae3d0d9327a6ca390afb6f1b812b2d5d05921a4;p=thirdparty%2Futil-linux.git libmount: don't setup new loopdev on remount with regular mtab [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 --- diff --git a/libmount/src/context.c b/libmount/src/context.c index d10afa36df..97cba72a33 100644 --- a/libmount/src/context.c +++ b/libmount/src/context.c @@ -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; }