File util-linux-libmount-is-mounted-loopdev.patch of Package util-linux.4136
commit d58b9706ed8a10cc484835119ed10385d141eb6c
Author: Karel Zak <kzak@redhat.com>
Date: Fri Feb 12 11:03:32 2016 +0100
libmount: fix mnt_table_is_fs_mounted() for loopdev
Reported-by: Stanislav Brabec <sbrabec@suse.cz>
Signed-off-by: Karel Zak <kzak@redhat.com>
Index: util-linux-2.25/libmount/src/tab.c
===================================================================
--- util-linux-2.25.orig/libmount/src/tab.c
+++ util-linux-2.25/libmount/src/tab.c
@@ -1543,8 +1543,9 @@ int mnt_table_is_fs_mounted(struct libmn
assert(tb);
assert(fstab_fs);
- DBG(FS, ul_debugobj(fstab_fs, "is FS mounted? [target=%s]",
- mnt_fs_get_target(fstab_fs)));
+ DBG(FS, ul_debugobj(fstab_fs, "is FS mounted? [target=%s, source=%s]",
+ mnt_fs_get_target(fstab_fs),
+ mnt_fs_get_source(fstab_fs)));
if (mnt_fs_is_swaparea(fstab_fs) || mnt_table_is_empty(tb)) {
DBG(FS, ul_debugobj(fstab_fs, "- ignore (swap or no data)"));
@@ -1616,8 +1617,13 @@ int mnt_table_is_fs_mounted(struct libmn
} else
flags = LOOPDEV_FL_OFFSET;
- if (loopdev_is_used(mnt_fs_get_srcpath(fs), src, offset, flags))
- break;
+ DBG(FS, ul_debugobj(fs, "checking for loop: src=%s", mnt_fs_get_srcpath(fs)));
+
+ if (!loopdev_is_used(mnt_fs_get_srcpath(fs), src, offset, flags))
+ continue;
+
+ DBG(FS, ul_debugobj(fs, "used loop"));
+
}
if (root) {