[libvirt PATCH] Make systemd unit ordering more robust
Michal Prívozník
mprivozn at redhat.com
Tue Feb 15 13:53:50 UTC 2022
On 2/15/22 12:12, Martin Kletzander wrote:
> Since libvirt-guests script/service can operate on various URIs and we do
> support both socket activation and traditional services, the ordering should be
> specified for all the possible sockets and services.
>
> Also remove the Wants= dependency since do not want to start any service. We
> cannot know which one libvirt-guests is configured, so we'd have to start all
> the daemons which would break if unused colliding services are not
> masked (libvirtd.service in the modular case and all the modular daemon service
> units in the monolithic scenario). Fortunately we can assume that the system is
> configured properly to start services/sockets that are of interest to the user.
> That also works with the setup described in https://libvirt.org/daemons.html .
>
> To make it even more robust we add the daemon service into the machine units
> created for individual domains as it was missing there.
>
> https://bugzilla.redhat.com/show_bug.cgi?id=1868537
>
> Signed-off-by: Martin Kletzander <mkletzan at redhat.com>
> ---
> src/util/virsystemd.c | 4 ++++
> tools/libvirt-guests.service.in | 12 +++++++++++-
> 2 files changed, 15 insertions(+), 1 deletion(-)
>
> diff --git a/src/util/virsystemd.c b/src/util/virsystemd.c
> index a86d4c6bb905..2d9711ad41b6 100644
> --- a/src/util/virsystemd.c
> +++ b/src/util/virsystemd.c
> @@ -441,7 +441,9 @@ int virSystemdCreateMachine(const char *name,
> nicindexes, nnicindexes, sizeof(int));
> gprops = g_variant_new_parsed("[('Slice', <%s>),"
> " ('After', <['libvirtd.service']>),"
> + " ('After', <['virt%sd.service']>),"
> " ('Before', <['virt-guest-shutdown.target']>)]",
> + drivername,
> slicename);
Surely these two variables need to be swapped.
> message = g_variant_new("(s at ayssus@ai at a(sv))",
> name,
> @@ -489,7 +491,9 @@ int virSystemdCreateMachine(const char *name,
> uuid, 16, sizeof(unsigned char));
> gprops = g_variant_new_parsed("[('Slice', <%s>),"
> " ('After', <['libvirtd.service']>),"
> + " ('After', <['virt%sd.service']>),"
> " ('Before', <['virt-guest-shutdown.target']>)]",
> + drivername,
> slicename);
And here too.
> message = g_variant_new("(s at ayssus@a(sv))",
> name,
> diff --git a/tools/libvirt-guests.service.in b/tools/libvirt-guests.service.in
> index 1a9b233e1177..3cf647619612 100644
> --- a/tools/libvirt-guests.service.in
> +++ b/tools/libvirt-guests.service.in
> @@ -1,10 +1,20 @@
> [Unit]
> Description=Suspend/Resume Running libvirt Guests
> -Wants=libvirtd.service
> Requires=virt-guest-shutdown.target
> After=network.target
> After=time-sync.target
> +After=libvirtd.socket
> +After=virtqemud.socket
> +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
Otherwise looking good.
Michal
More information about the libvir-list
mailing list