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
This commit is contained in:
parent
8af389b758
commit
a13ea6497e
|
|
@ -151,14 +151,17 @@ main(int argc, char *argv[])
|
||||||
if (chdir (deploy_path) < 0)
|
if (chdir (deploy_path) < 0)
|
||||||
err (EXIT_FAILURE, "failed to chdir to deploy_path");
|
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;
|
bool mount_var = true;
|
||||||
/* In the systemd case, this is handled by ostree-system-generator by default */
|
#ifdef HAVE_SYSTEMD_AND_LIBMOUNT
|
||||||
#ifndef HAVE_SYSTEMD_AND_LIBMOUNT
|
mount_var = false;
|
||||||
/* file in /run can override that behaviour */
|
|
||||||
if (lstat (INITRAMFS_MOUNT_VAR, &stbuf) < 0)
|
|
||||||
mount_var = false;
|
|
||||||
#endif
|
#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 */
|
/* Link to the deployment's /var */
|
||||||
if (mount_var && mount ("../../var", "var", NULL, MS_MGC_VAL|MS_BIND, NULL) < 0)
|
if (mount_var && mount ("../../var", "var", NULL, MS_MGC_VAL|MS_BIND, NULL) < 0)
|
||||||
err (EXIT_FAILURE, "failed to bind mount ../../var to var");
|
err (EXIT_FAILURE, "failed to bind mount ../../var to var");
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue