From: Jonathan Lebon Date: Tue, 3 Jul 2018 21:41:45 +0000 (-0400) Subject: switchroot: Fix regression for separately mounted /var X-Git-Tag: archive/raspbian/2022.1-3+rpi1~1^2~4^2~21^2~19 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=a13ea6497e91920e9d6297d14a132123a5e48b43;p=ostree.git switchroot: Fix regression for separately mounted /var I made a logical error in #1617 which resulted in the exact *opposite* behaviour we want when `/var` is a separate mount. Split this out and lower the number of negations to make it more obvious that it's correct. Closes: #1667 Closes: #1668 Approved by: cgwalters --- diff --git a/src/switchroot/ostree-prepare-root.c b/src/switchroot/ostree-prepare-root.c index 53df463c..0131d246 100644 --- a/src/switchroot/ostree-prepare-root.c +++ b/src/switchroot/ostree-prepare-root.c @@ -151,14 +151,17 @@ main(int argc, char *argv[]) if (chdir (deploy_path) < 0) err (EXIT_FAILURE, "failed to chdir to deploy_path"); + /* Default to true, but in the systemd case, default to false because it's handled by + * ostree-system-generator. */ bool mount_var = true; - /* In the systemd case, this is handled by ostree-system-generator by default */ -#ifndef HAVE_SYSTEMD_AND_LIBMOUNT - /* file in /run can override that behaviour */ - if (lstat (INITRAMFS_MOUNT_VAR, &stbuf) < 0) - mount_var = false; +#ifdef HAVE_SYSTEMD_AND_LIBMOUNT + mount_var = false; #endif + /* file in /run can override the default behaviour so that we definitely mount /var */ + if (lstat (INITRAMFS_MOUNT_VAR, &stbuf) == 0) + mount_var = true; + /* Link to the deployment's /var */ if (mount_var && mount ("../../var", "var", NULL, MS_MGC_VAL|MS_BIND, NULL) < 0) err (EXIT_FAILURE, "failed to bind mount ../../var to var");