From: Colin Walters Date: Thu, 4 Jan 2024 15:40:09 +0000 (-0500) Subject: Merge pull request #3129 from cgwalters/fix-unlock-composefs-compat X-Git-Tag: archive/raspbian/2024.8-1+rpi1^2~7^2~7^2~9 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=9faf55699a2c261e0ea16bdae4081f3c93310867;p=ostree.git Merge pull request #3129 from cgwalters/fix-unlock-composefs-compat prepare-root: Fix composefs + ostree admin unlock --hotfix compat --- 9faf55699a2c261e0ea16bdae4081f3c93310867 diff --cc src/switchroot/ostree-prepare-root.c index 5f4d2132,d7c44e97..bde698b0 --- a/src/switchroot/ostree-prepare-root.c +++ b/src/switchroot/ostree-prepare-root.c @@@ -641,21 -637,13 +641,14 @@@ main (int argc, char *argv[] { /* Do we have a persistent overlayfs for /usr? If so, mount it now. */ const char usr_ovl_options[] - = "lowerdir=" TMP_SYSROOT "/usr,upperdir=.usr-ovl-upper,workdir=.usr-ovl-work"; + = "lowerdir=" TMP_SYSROOT + "/usr,upperdir=.usr-ovl-upper,workdir=" OTCORE_HOTFIX_USR_OVL_WORK; - /* Except overlayfs barfs if we try to mount it on a read-only - * filesystem. For this use case I think admins are going to be - * okay if we remount the rootfs here, rather than waiting until - * later boot and `systemd-remount-fs.service`. - */ - if (path_is_on_readonly_fs (TMP_SYSROOT)) - { - if (mount (TMP_SYSROOT, TMP_SYSROOT, NULL, MS_REMOUNT | MS_SILENT, NULL) < 0) - err (EXIT_FAILURE, "failed to remount rootfs writable (for overlayfs)"); - } - - if (mount ("overlay", TMP_SYSROOT "/usr", "overlay", MS_SILENT, usr_ovl_options) < 0) + unsigned long mflags = MS_SILENT; + // Propagate readonly state + if (!sysroot_currently_writable) + mflags |= MS_RDONLY; + if (mount ("overlay", TMP_SYSROOT "/usr", "overlay", mflags, usr_ovl_options) < 0) err (EXIT_FAILURE, "failed to mount /usr overlayfs"); } else if (!using_composefs)