switchroot: Fix regression for separately mounted /var
authorJonathan Lebon <jonathan@jlebon.com>
Tue, 3 Jul 2018 21:41:45 +0000 (17:41 -0400)
committerAtomic Bot <atomic-devel@projectatomic.io>
Wed, 4 Jul 2018 16:06:38 +0000 (16:06 +0000)
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

src/switchroot/ostree-prepare-root.c

index 53df463c339b2a0f376f8d7d19e77087942d5d82..0131d24658e97df4ab3acf1a0eeda7586fda52bd 100644 (file)
@@ -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");