summaryrefslogtreecommitdiff
path: root/units
diff options
context:
space:
mode:
authorKai Lueke <kailuke@microsoft.com>2023-04-06 17:32:33 +0900
committerKai Lueke <kailuke@microsoft.com>2023-04-06 20:47:26 +0900
commit721412ac986293eb93607ec1aadec0928678956e (patch)
treef93667e97131d534b3ebf791596b98285e7c2f7d /units
parent1e07c6f31d6ece4cbb264194669bd0ec0f533692 (diff)
downloadsystemd-721412ac986293eb93607ec1aadec0928678956e.tar.gz
systemd-sysext/confext.service: Refresh on start/reload
When adding a sysext image to the system and manuall merging it, a later "systemctl (re)start systemd-sysext" won't work because "merge" refuses to work when something is merged already. Another problem with "merge" at start plus "unmerge" at stop is that a service restart can't make use of the new MOVE_MOUNT_BENEATH in the future even which would only be available in "refresh". It also prepares us for setting up the merged overlay for the sysroot from the initrd already, which also would lead to the mentioned start problem of the service (One optimization could be to skip the loading but only if we are sure that all images were loaded and weren't modified since - this assumption is hard because early services could want to inject a sysext, too). Use "refresh" on service start to fix the problem that the service can't start as soon as a manual merge was done. Also add a reload action that allows to issue "systemctl reload systemd-sysext" and it will make use of MOVE_MOUNT_BENEATH once we implement this in systemd-sysext refresh (and it's available from the kernel).
Diffstat (limited to 'units')
-rw-r--r--units/systemd-confext.service3
-rw-r--r--units/systemd-sysext.service3
2 files changed, 4 insertions, 2 deletions
diff --git a/units/systemd-confext.service b/units/systemd-confext.service
index b9d0b21508..3b46ecae08 100644
--- a/units/systemd-confext.service
+++ b/units/systemd-confext.service
@@ -26,7 +26,8 @@ Before=shutdown.target initrd-switch-root.target
[Service]
Type=oneshot
RemainAfterExit=yes
-ExecStart=systemd-confext merge
+ExecStart=systemd-confext refresh
+ExecReload=systemd-confext refresh
ExecStop=systemd-confext unmerge
[Install]
diff --git a/units/systemd-sysext.service b/units/systemd-sysext.service
index 9a8d4ebc5f..117591e897 100644
--- a/units/systemd-sysext.service
+++ b/units/systemd-sysext.service
@@ -25,7 +25,8 @@ Before=shutdown.target initrd-switch-root.target
[Service]
Type=oneshot
RemainAfterExit=yes
-ExecStart=systemd-sysext merge
+ExecStart=systemd-sysext refresh
+ExecReload=systemd-sysext refresh
ExecStop=systemd-sysext unmerge
[Install]