summaryrefslogtreecommitdiffstats
path: root/libmount/src/tab.c
diff options
context:
space:
mode:
authorKarel Zak2016-02-12 11:03:32 +0100
committerKarel Zak2016-02-12 11:03:32 +0100
commitd58b9706ed8a10cc484835119ed10385d141eb6c (patch)
tree135112bb4bab2903b3b3f26257b606fb04bc0fd1 /libmount/src/tab.c
parenttests: fix redirection (diff)
downloadkernel-qcow2-util-linux-d58b9706ed8a10cc484835119ed10385d141eb6c.tar.gz
kernel-qcow2-util-linux-d58b9706ed8a10cc484835119ed10385d141eb6c.tar.xz
kernel-qcow2-util-linux-d58b9706ed8a10cc484835119ed10385d141eb6c.zip
libmount: fix mnt_table_is_fs_mounted() for loopdev
Reported-by: Stanislav Brabec <sbrabec@suse.cz> Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'libmount/src/tab.c')
-rw-r--r--libmount/src/tab.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/libmount/src/tab.c b/libmount/src/tab.c
index cb31de927..729a99fc0 100644
--- a/libmount/src/tab.c
+++ b/libmount/src/tab.c
@@ -1485,8 +1485,9 @@ int mnt_table_is_fs_mounted(struct libmnt_table *tb, struct libmnt_fs *fstab_fs)
int rc = 0;
dev_t devno = 0;
- 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)"));
@@ -1558,9 +1559,12 @@ int mnt_table_is_fs_mounted(struct libmnt_table *tb, struct libmnt_fs *fstab_fs)
} else
flags = LOOPDEV_FL_OFFSET;
+ DBG(FS, ul_debugobj(fs, "checking for loop: src=%s", mnt_fs_get_srcpath(fs)));
#if __linux__
- if (loopdev_is_used(mnt_fs_get_srcpath(fs), src, offset, flags))
- break;
+ if (!loopdev_is_used(mnt_fs_get_srcpath(fs), src, offset, flags))
+ continue;
+
+ DBG(FS, ul_debugobj(fs, "used loop"));
#endif
}