[PATCH] libvirt-guests: Fix dependency ordering in service file
Martin Kletzander
mkletzan at redhat.com
Fri Sep 23 13:29:29 UTC 2022
On Tue, Aug 30, 2022 at 08:43:47AM +0200, Martin Kletzander wrote:
>After some debugging and discussion with systemd team it turns out we
>are misusing the ordering in libvirt-guests.service. That happened
>because we want to support both monolithic and modular daemon setups and
>on top of that we also want to support socket activation and services
>without socket activation. Unfortunately this is impossible to express
>in the unit file because of how transactions are handled in systemd when
>dependencies are resolved and multiple actions (jobs) are queued. For
>explanation from Michal Sekletar see comment #7 in the BZ this patch is
>fixing:
>
>https://bugzilla.redhat.com/show_bug.cgi?id=1964855#c7
>
>In order to support all the scenarios this patch also amends the
>manpages so that users that are changing the default can also read how
>to correct the dependency ordering in libvirt-guests unit file.
>
>Ideally we would also keep the existing configuration during upgrade,
>but due to our huge support matrix this seems hardly feasible as it
>could introduce even more problems.
>
>Signed-off-by: Martin Kletzander <mkletzan at redhat.com>
>---
echo request^W^Wping
> docs/manpages/libvirtd.rst | 14 ++++++++++++++
> docs/manpages/virtlxcd.rst | 14 ++++++++++++++
> docs/manpages/virtqemud.rst | 14 ++++++++++++++
> docs/manpages/virtvboxd.rst | 14 ++++++++++++++
> docs/manpages/virtvzd.rst | 14 ++++++++++++++
> docs/manpages/virtxend.rst | 14 ++++++++++++++
> tools/libvirt-guests.service.in | 6 ------
> 7 files changed, 84 insertions(+), 6 deletions(-)
>
>diff --git a/docs/manpages/libvirtd.rst b/docs/manpages/libvirtd.rst
>index ee72f0838221..1347b9b21042 100644
>--- a/docs/manpages/libvirtd.rst
>+++ b/docs/manpages/libvirtd.rst
>@@ -79,6 +79,20 @@ unit files must be masked:
> $ systemctl mask libvirtd.socket libvirtd-ro.socket \
> libvirtd-admin.socket libvirtd-tls.socket libvirtd-tcp.socket
>
>+If using libvirt-guests service then the ordering for that service needs to be
>+adapted so that it is ordered after the service unit instead of the socket unit.
>+Since dependencies and ordering cannot be changed with drop-in overrides, the
>+whole libvirt-guests unit file needs to be changed. In order to preserve such
>+change copy the installed ``/usr/lib/systemd/system/libvirt-guests.service`` to
>+``/etc/systemd/system/libvirt-guests.service`` and make the change there,
>+specifically make sure the ``After=`` ordering mentions ``libvirtd.service`` and
>+not ``libvirtd.socket``:
>+
>+::
>+
>+ [Unit]
>+ After=libvirtd.service
>+
>
> OPTIONS
> =======
>diff --git a/docs/manpages/virtlxcd.rst b/docs/manpages/virtlxcd.rst
>index 2e9d8fd14bbb..aebc8adb5822 100644
>--- a/docs/manpages/virtlxcd.rst
>+++ b/docs/manpages/virtlxcd.rst
>@@ -60,6 +60,20 @@ unit files must be masked:
> $ systemctl mask virtlxcd.socket virtlxcd-ro.socket \
> virtlxcd-admin.socket
>
>+If using libvirt-guests service then the ordering for that service needs to be
>+adapted so that it is ordered after the service unit instead of the socket unit.
>+Since dependencies and ordering cannot be changed with drop-in overrides, the
>+whole libvirt-guests unit file needs to be changed. In order to preserve such
>+change copy the installed ``/usr/lib/systemd/system/libvirt-guests.service`` to
>+``/etc/systemd/system/libvirt-guests.service`` and make the change there,
>+specifically make sure the ``After=`` ordering mentions ``virtlxcd.service`` and
>+not ``virtlxcd.socket``:
>+
>+::
>+
>+ [Unit]
>+ After=virtlxcd.service
>+
>
> OPTIONS
> =======
>diff --git a/docs/manpages/virtqemud.rst b/docs/manpages/virtqemud.rst
>index ea8d6e3105db..fa9a6ce3755c 100644
>--- a/docs/manpages/virtqemud.rst
>+++ b/docs/manpages/virtqemud.rst
>@@ -60,6 +60,20 @@ unit files must be masked:
> $ systemctl mask virtqemud.socket virtqemud-ro.socket \
> virtqemud-admin.socket
>
>+If using libvirt-guests service then the ordering for that service needs to be
>+adapted so that it is ordered after the service unit instead of the socket unit.
>+Since dependencies and ordering cannot be changed with drop-in overrides, the
>+whole libvirt-guests unit file needs to be changed. In order to preserve such
>+change copy the installed ``/usr/lib/systemd/system/libvirt-guests.service`` to
>+``/etc/systemd/system/libvirt-guests.service`` and make the change there,
>+specifically make sure the ``After=`` ordering mentions ``virtqemud.service`` and
>+not ``virtqemud.socket``:
>+
>+::
>+
>+ [Unit]
>+ After=virtqemud.service
>+
>
> OPTIONS
> =======
>diff --git a/docs/manpages/virtvboxd.rst b/docs/manpages/virtvboxd.rst
>index d7339d99f22b..f90de3451d8d 100644
>--- a/docs/manpages/virtvboxd.rst
>+++ b/docs/manpages/virtvboxd.rst
>@@ -58,6 +58,20 @@ unit files must be masked:
> $ systemctl mask virtvboxd.socket virtvboxd-ro.socket \
> virtvboxd-admin.socket
>
>+If using libvirt-guests service then the ordering for that service needs to be
>+adapted so that it is ordered after the service unit instead of the socket unit.
>+Since dependencies and ordering cannot be changed with drop-in overrides, the
>+whole libvirt-guests unit file needs to be changed. In order to preserve such
>+change copy the installed ``/usr/lib/systemd/system/libvirt-guests.service`` to
>+``/etc/systemd/system/libvirt-guests.service`` and make the change there,
>+specifically make sure the ``After=`` ordering mentions ``virtvboxd.service`` and
>+not ``virtvboxd.socket``:
>+
>+::
>+
>+ [Unit]
>+ After=virtvboxd.service
>+
>
> OPTIONS
> =======
>diff --git a/docs/manpages/virtvzd.rst b/docs/manpages/virtvzd.rst
>index 42dfa263e450..970719aac1d5 100644
>--- a/docs/manpages/virtvzd.rst
>+++ b/docs/manpages/virtvzd.rst
>@@ -60,6 +60,20 @@ unit files must be masked:
> $ systemctl mask virtvzd.socket virtvzd-ro.socket \
> virtvzd-admin.socket
>
>+If using libvirt-guests service then the ordering for that service needs to be
>+adapted so that it is ordered after the service unit instead of the socket unit.
>+Since dependencies and ordering cannot be changed with drop-in overrides, the
>+whole libvirt-guests unit file needs to be changed. In order to preserve such
>+change copy the installed ``/usr/lib/systemd/system/libvirt-guests.service`` to
>+``/etc/systemd/system/libvirt-guests.service`` and make the change there,
>+specifically make sure the ``After=`` ordering mentions ``virtvzd.service`` and
>+not ``virtvzd.socket``:
>+
>+::
>+
>+ [Unit]
>+ After=virtvzd.service
>+
>
> OPTIONS
> =======
>diff --git a/docs/manpages/virtxend.rst b/docs/manpages/virtxend.rst
>index b08346b489d2..cf7685ecc0e6 100644
>--- a/docs/manpages/virtxend.rst
>+++ b/docs/manpages/virtxend.rst
>@@ -60,6 +60,20 @@ unit files must be masked:
> $ systemctl mask virtxend.socket virtxend-ro.socket \
> virtxend-admin.socket
>
>+If using libvirt-guests service then the ordering for that service needs to be
>+adapted so that it is ordered after the service unit instead of the socket unit.
>+Since dependencies and ordering cannot be changed with drop-in overrides, the
>+whole libvirt-guests unit file needs to be changed. In order to preserve such
>+change copy the installed ``/usr/lib/systemd/system/libvirt-guests.service`` to
>+``/etc/systemd/system/libvirt-guests.service`` and make the change there,
>+specifically make sure the ``After=`` ordering mentions ``virtxend.service`` and
>+not ``virtxend.socket``:
>+
>+::
>+
>+ [Unit]
>+ After=virtxend.service
>+
>
> OPTIONS
> =======
>diff --git a/tools/libvirt-guests.service.in b/tools/libvirt-guests.service.in
>index 3cf647619612..1c569c320dfd 100644
>--- a/tools/libvirt-guests.service.in
>+++ b/tools/libvirt-guests.service.in
>@@ -9,12 +9,6 @@ After=virtlxcd.socket
> After=virtvboxd.socket
> After=virtvzd.socket
> After=virtxend.socket
>-After=libvirtd.service
>-After=virtqemud.service
>-After=virtlxcd.service
>-After=virtvboxd.service
>-After=virtvzd.service
>-After=virtxend.service
> After=virt-guest-shutdown.target
> Documentation=man:libvirt-guests(8)
> Documentation=https://libvirt.org
>--
>2.37.2
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20220923/f82af796/attachment-0001.sig>
More information about the libvir-list
mailing list