From 471ed8bd15dc4b3037ca100378b802bbc6a9d0de Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Sep 17 2020 04:08:20 +0000 Subject: import ostree-2020.5-4.el8 --- diff --git a/SOURCES/0001-ostree-prepare-root-Fix-etc-bind-mount.patch b/SOURCES/0001-ostree-prepare-root-Fix-etc-bind-mount.patch new file mode 100644 index 0000000..1a59122 --- /dev/null +++ b/SOURCES/0001-ostree-prepare-root-Fix-etc-bind-mount.patch @@ -0,0 +1,28 @@ +From b3c7b059eaee3123d5b2523065726e866c533fe9 Mon Sep 17 00:00:00 2001 +From: Jonathan Lebon +Date: Fri, 28 Aug 2020 12:35:28 -0400 +Subject: [PATCH] ostree-prepare-root: Fix /etc bind mount + +We were bind-mounting the initramfs' `/etc` (to itself) instead of the +target deployment `/etc` (to itself). Since we're already `chdir`'ed +into it, we can just drop the leading slash. +--- + src/switchroot/ostree-prepare-root.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/switchroot/ostree-prepare-root.c b/src/switchroot/ostree-prepare-root.c +index f7e4fe47..6351babb 100644 +--- a/src/switchroot/ostree-prepare-root.c ++++ b/src/switchroot/ostree-prepare-root.c +@@ -251,7 +251,7 @@ main(int argc, char *argv[]) + * sysroot, we still need a writable /etc. And to avoid race conditions + * we ensure it's writable in the initramfs, before we switchroot at all. + */ +- if (mount ("/etc", "/etc", NULL, MS_BIND, NULL) < 0) ++ if (mount ("etc", "etc", NULL, MS_BIND, NULL) < 0) + err (EXIT_FAILURE, "failed to make /etc a bind mount"); + /* Pass on the fact that we discovered a readonly sysroot to ostree-remount.service */ + int fd = open (_OSTREE_SYSROOT_READONLY_STAMP, O_WRONLY | O_CREAT | O_CLOEXEC, 0644); +-- +2.26.2 + diff --git a/SOURCES/0001-ostree-remount-Remount-etc-rw-if-needed.patch b/SOURCES/0001-ostree-remount-Remount-etc-rw-if-needed.patch new file mode 100644 index 0000000..321600f --- /dev/null +++ b/SOURCES/0001-ostree-remount-Remount-etc-rw-if-needed.patch @@ -0,0 +1,39 @@ +From a7a751b69f2315635d6ae38a0b1344287b67079a Mon Sep 17 00:00:00 2001 +From: Jonathan Lebon +Date: Fri, 28 Aug 2020 12:35:29 -0400 +Subject: [PATCH] ostree-remount: Remount /etc rw if needed + +When we remount `/sysroot` as read-only, we also make `/etc` read-only. +This is usually OK because we then remount `/var` read-write, which also +flips `/etc` back to read-write... unless `/var` is a separate +filesystem and not a bind-mount to the stateroot `/var`. + +Fix this by just remounting `/etc` read-write in the read-only sysroot +case. + +Eventually, I think we should rework this to set everything up the way +we want from the initramfs (#2115). This would also eliminate the window +during which `/etc` is read-only while `ostree-remount` runs. +--- + src/switchroot/ostree-remount.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/src/switchroot/ostree-remount.c b/src/switchroot/ostree-remount.c +index cfd270bb..3981682a 100644 +--- a/src/switchroot/ostree-remount.c ++++ b/src/switchroot/ostree-remount.c +@@ -112,6 +112,11 @@ main(int argc, char *argv[]) + bool sysroot_configured_readonly = unlink (_OSTREE_SYSROOT_READONLY_STAMP) == 0; + do_remount ("/sysroot", !sysroot_configured_readonly); + ++ /* And also make sure to make /etc rw again. We make this conditional on ++ * sysroot_configured_readonly because only in that case is it a bind-mount. */ ++ if (sysroot_configured_readonly) ++ do_remount ("/etc", true); ++ + /* If /var was created as as an OSTree default bind mount (instead of being a separate filesystem) + * then remounting the root mount read-only also remounted it. + * So just like /etc, we need to make it read-write by default. +-- +2.26.2 + diff --git a/SPECS/ostree.spec b/SPECS/ostree.spec index eb4e7f0..e5688de 100644 --- a/SPECS/ostree.spec +++ b/SPECS/ostree.spec @@ -8,12 +8,14 @@ Summary: Tool for managing bootable, immutable filesystem trees Name: ostree Version: 2020.5 -Release: 3%{?dist} +Release: 4%{?dist} Source0: https://github.com/ostreedev/%{name}/releases/download/v%{version}/libostree-%{version}.tar.xz License: LGPLv2+ URL: https://ostree.readthedocs.io/en/latest/ Patch0: 0001-linuxfsutil-Pass-int-to-ioctl-not-long.patch +Patch1: 0001-ostree-prepare-root-Fix-etc-bind-mount.patch +Patch2: 0001-ostree-remount-Remount-etc-rw-if-needed.patch BuildRequires: git # We always run autogen.sh @@ -164,6 +166,9 @@ find %{buildroot} -name '*.la' -delete %endif %changelog +* Wed Sep 09 2020 Colin Walters - 2020.5-4 +- Backport patches for https://bugzilla.redhat.com/show_bug.cgi?id=1875567 + * Mon Aug 24 2020 Colin Walters - 2020.5-3 - Backport https://github.com/ostreedev/ostree/pull/2179/commits/06ed04a816141914adb9bd3e32392801fce5bc8e