From 0760ce128183e1bdaaa08bd3d6b17e275b81418a Mon Sep 17 00:00:00 2001 From: Philip Withnall Date: Wed, 25 Oct 2017 15:49:49 +0100 Subject: [PATCH] =?UTF-8?q?lib/repo-finder-mount:=20Ignore=20mounts=20whic?= =?UTF-8?q?h=20have=20a=20=E2=80=98system=E2=80=99=20file=20system?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit For example, tmpfs or a cgroup file system. This is basically an optimisation of the list of file systems we check for repositories, since we would never expect any of these file systems to be capable of containing a repository. Depends on the new API from https://bugzilla.gnome.org/show_bug.cgi?id=788927. Signed-off-by: Philip Withnall Closes: #1307 Approved by: cgwalters --- src/libostree/ostree-repo-finder-mount.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/libostree/ostree-repo-finder-mount.c b/src/libostree/ostree-repo-finder-mount.c index bae3664e..bc01f913 100644 --- a/src/libostree/ostree-repo-finder-mount.c +++ b/src/libostree/ostree-repo-finder-mount.c @@ -23,6 +23,7 @@ #include "config.h" #include +#include #include #include #include @@ -355,6 +356,23 @@ ostree_repo_finder_mount_resolve_async (OstreeRepoFinder *finde continue; } +#if GLIB_CHECK_VERSION(2, 55, 0) +G_GNUC_BEGIN_IGNORE_DEPRECATIONS /* remove once GLIB_VERSION_MAX_ALLOWED ≥ 2.56 */ + g_autoptr(GUnixMountEntry) mount_entry = g_unix_mount_at (mount_root_path, NULL); + + if (mount_entry != NULL && + (g_unix_is_system_fs_type (g_unix_mount_get_fs_type (mount_entry)) || + g_unix_is_system_device_path (g_unix_mount_get_device_path (mount_entry)))) + { + g_debug ("Ignoring mount ‘%s’ as its file system type (%s) or device " + "path (%s) indicate it’s a system mount.", + mount_name, g_unix_mount_get_fs_type (mount_entry), + g_unix_mount_get_device_path (mount_entry)); + continue; + } +G_GNUC_END_IGNORE_DEPRECATIONS +#endif /* GLib 2.56.0 */ + /* stat() the mount root so we can later check whether the resolved * repositories for individual refs are on the same device (to avoid the * symlinks for them pointing outside the mount root). */