From 1a8f2f0769fd97c59b3d5e25f6be62c586ca6c06 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Tue, 16 May 2017 21:44:22 -0400 Subject: [PATCH] switchroot/generator: Add var.mount to local-fs.target.requires MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Unbreaks mounting in CentOS. Newer systemd in Fedora pulls didn't need this, I think due to `RequiresMountsFor=`. Anyways, this is what the fstab generator does, and it's clearly right ✓. Closes: https://github.com/ostreedev/ostree/issues/867 Closes: #869 Approved by: jlebon --- src/libostree/ostree-impl-system-generator.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/libostree/ostree-impl-system-generator.c b/src/libostree/ostree-impl-system-generator.c index 60df145a..72f52bc5 100644 --- a/src/libostree/ostree-impl-system-generator.c +++ b/src/libostree/ostree-impl-system-generator.c @@ -212,6 +212,16 @@ _ostree_impl_system_generator (const char *ostree_cmdline, "var.mount", error)) return FALSE; + /* And ensure it's required; newer systemd will auto-inject fs dependencies + * via RequiresMountsFor and the like, but on older versions (e.g. CentOS) we + * need this. It's what the fstab generator does. And my mother always said, + * listen to the fstab generator. + */ + if (!glnx_shutil_mkdir_p_at (normal_dir_dfd, "local-fs.target.requires", 0755, cancellable, error)) + return FALSE; + if (symlinkat ("../var.mount", normal_dir_dfd, "local-fs.target.requires/var.mount") < 0) + return glnx_throw_errno_prefix (error, "symlinkat"); + return TRUE; #else return glnx_throw (error, "Not implemented");