]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
libmount: always trust the source of a pseudofs
authorDave Reisner <d@falconindy.com>
Mon, 26 Dec 2011 22:10:22 +0000 (17:10 -0500)
committerKarel Zak <kzak@redhat.com>
Mon, 2 Jan 2012 12:59:35 +0000 (13:59 +0100)
Since nodev FSs have no backing block device, it's unreasonable to try
and resolve the source back to a path on the filesystem. Always trust
the source of the FS given in /etc/fstab to avoid remounting the device
when a directory of the same name exists in the current working
directory.

Example reproduction:

  # mkdir /foo
  # echo 'foo  /foo  tmpfs  defaults  0  0' >> /etc/fstab
  # mount -a
  # cd /root; mkdir foo
  # mount -a
  # mount | grep /foo
  foo on /foo type tmpfs (rw,relatime)
  /root/foo on /foo type tmpfs (rw,relatime)

[kzak@redhat.com: - use fs->flags to detect pseudo FS]

Signed-off-by: Dave Reisner <dreisner@archlinux.org>
Signed-off-by: Karel Zak <kzak@redhat.com>
libmount/src/tab.c

index 2bc49e3b7afbe755e2029312fe1c99706d0d4d31..8b708112d56ef7c62f031d835ff68b26c2ab4d76 100644 (file)
@@ -841,6 +841,8 @@ int mnt_table_is_fs_mounted(struct libmnt_table *tb, struct libmnt_fs *fstab_fs)
        src_fs = mnt_table_get_fs_root(tb, fstab_fs, flags, &root);
        if (src_fs)
                src = mnt_fs_get_srcpath(src_fs);
+       else if (fstab_fs->flags & MNT_FS_PSEUDO)
+               src = mnt_fs_get_source(fstab_fs);
        else
                src = mnt_resolve_spec(mnt_fs_get_source(fstab_fs), tb->cache);