]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
systemd-sysext/confext.service: Refresh on start/reload 27161/head
authorKai Lueke <kailuke@microsoft.com>
Thu, 6 Apr 2023 08:32:33 +0000 (17:32 +0900)
committerKai Lueke <kailuke@microsoft.com>
Thu, 6 Apr 2023 11:47:26 +0000 (20:47 +0900)
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).

units/systemd-confext.service
units/systemd-sysext.service

index b9d0b21508ee4b7522eca7bb8d6f8a49f2863467..3b46ecae08bec55e7f46e466f142c171e05c1441 100644 (file)
@@ -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]
index 9a8d4ebc5f8639630bb04ca8daaf4525742c3927..117591e897ee7ac12fbca2cb97cae75767b11211 100644 (file)
@@ -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]