rpm-ostree/0001-compose-Also-treat-FUSE-as-a-netfs.patch
2018-03-01 17:10:32 -05:00

65 lines
2.1 KiB
Diff

From 50b1f9b63f047f721dd6ad3d2d1913843db13674 Mon Sep 17 00:00:00 2001
From: Colin Walters <walters@verbum.org>
Date: Thu, 1 Mar 2018 13:01:12 -0500
Subject: [PATCH] compose: Also treat FUSE as a netfs
Fedora is apparently currently using sshfs because S390 is in a different
location than the main servers.
Since it seems nontrivial to detect just sshfs, and FUSE is problematic in
general, let's just do the the not-horrific-on-netfs path for all FUSE mounts.
Closes: #1285
Approved by: jlebon
---
src/app/rpmostree-compose-builtin-tree.c | 22 +++++++++++++++++++---
1 file changed, 19 insertions(+), 3 deletions(-)
diff --git a/src/app/rpmostree-compose-builtin-tree.c b/src/app/rpmostree-compose-builtin-tree.c
index 06ab73a..dc2cbc8 100644
--- a/src/app/rpmostree-compose-builtin-tree.c
+++ b/src/app/rpmostree-compose-builtin-tree.c
@@ -1186,11 +1186,22 @@ impl_install_tree (RpmOstreeTreeComposeContext *self,
static gboolean
repo_is_on_netfs (OstreeRepo *repo)
{
+#ifndef FUSE_SUPER_MAGIC
+#define FUSE_SUPER_MAGIC 0x65735546
+#endif
+
int dfd = ostree_repo_get_dfd (repo);
struct statfs stbuf;
if (fstatfs (dfd, &stbuf) != 0)
return FALSE;
- return stbuf.f_type == NFS_SUPER_MAGIC;
+ switch (stbuf.f_type)
+ {
+ case NFS_SUPER_MAGIC:
+ case FUSE_SUPER_MAGIC:
+ return TRUE;
+ default:
+ return FALSE;
+ }
}
/* Perform required postprocessing, and invoke rpmostree_compose_commit(). */
@@ -1257,8 +1268,13 @@ impl_commit_tree (RpmOstreeTreeComposeContext *self,
}
/* See comment above */
- const gboolean use_txn = (getenv ("RPMOSTREE_COMMIT_NO_TXN") == NULL &&
- !repo_is_on_netfs (self->repo));
+ const gboolean txn_explicitly_disabled = (getenv ("RPMOSTREE_COMMIT_NO_TXN") != NULL);
+ const gboolean using_netfs = repo_is_on_netfs (self->repo);
+ if (txn_explicitly_disabled)
+ g_print ("libostree transactions explicitly disabled\n");
+ else if (using_netfs)
+ g_print ("Network filesystem detected for repo; disabling transaction\n");
+ const gboolean use_txn = !(txn_explicitly_disabled || using_netfs);
if (use_txn)
{
--
2.14.3