Skip to content
Snippets Groups Projects
Commit 2ce89c63 authored by Denis Pynkin's avatar Denis Pynkin
Browse files

Force the call of systemd-journal-flush before `/var` unmount

The problem with failed `/var` unmount placed on separate partition
have a long story: https://github.com/systemd/systemd/issues/867
According messages after the fix integrated into upstream -- there are
some corner cases which aren't fully fixed by patches adding [relinquish
options](pkg/systemd!26

)

In case of ostree-based images we have a similar issue since `/var` is
bind-mounted in initramfs. Systemd is trying to unmount `/var` on
shutdown, however `ExecStop=` command from `systemd-journal-flush`
service is not executed during shutdown.
By adding `PartOf=var.mount` into service file we force the
`systemd-journal-flush.service` to be called prior the `/var` unmount.
This allow to unlock the bind-mount, since `journald` have a chance to
re-link it's journal into `/run` with `journalctl
--smart-relinquish-var` call.

Signed-off-by: default avatarDenis Pynkin <denis.pynkin@collabora.com>
parent 97e040df
No related branches found
No related tags found
No related merge requests found
From f09e75bfb76f747e966b5ee9c5843a66177871dd Mon Sep 17 00:00:00 2001
From: Denis Pynkin <denis.pynkin@collabora.com>
Date: Tue, 17 Nov 2020 20:03:17 +0300
Subject: [PATCH] Force the call of systemd-journal-flush before `/var` unmount
The problem with failed `/var` unmount placed on separate partition
have a long story: https://github.com/systemd/systemd/issues/867
According messages after the fix integrated into upstream -- there are
some corner cases which aren't fully fixed by patches adding [relinquish
options](https://gitlab.apertis.org/pkg/systemd/-/merge_requests/26)
In case of ostree-based images we have a similar issue since `/var` is
bind-mounted in initramfs. Systemd is trying to unmount `/var` on
shutdown, however `ExecStop=` command from `systemd-journal-flush`
service is not executed during shutdown.
By adding `PartOf=var.mount` into service file we force the
`systemd-journal-flush.service` to be called prior the `/var` unmount.
This allow to unlock the bind-mount, since `journald` have a chance to
re-link it's journal into `/run` with `journalctl
--smart-relinquish-var` call.
Signed-off-by: Denis Pynkin <denis.pynkin@collabora.com>
---
units/systemd-journal-flush.service.in | 1 +
1 file changed, 1 insertion(+)
diff --git a/units/systemd-journal-flush.service.in b/units/systemd-journal-flush.service.in
index bacfe51..c10eece 100644
--- a/units/systemd-journal-flush.service.in
+++ b/units/systemd-journal-flush.service.in
@@ -15,6 +15,7 @@ Requires=systemd-journald.service
After=systemd-journald.service systemd-remount-fs.service
Before=systemd-tmpfiles-setup.service
RequiresMountsFor=/var/log/journal
+PartOf=var.mount
[Service]
ExecStart=@rootbindir@/journalctl --flush
--
2.25.4
......@@ -84,3 +84,4 @@ sd-boot-fix-menu-ordering-with-boot-counting.patch
apertis/0101-basic-cap-list-parse-print-numerical-capabilities.patch
apertis/0102-basic-capability-util-let-cap_last_cap-return-unsign.patch
apertis/0103-basic-cap-list-reduce-scope-of-variables.patch
apertis/Force-the-call-of-systemd-journal-flush-before-var-u.patch
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment