[libvirt PATCH] util: Fix machined servicename

Martin Kletzander posted 1 patch 2 years, 2 months ago
Test syntax-check failed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/libvirt tags/patchew/b32ad024b7941c14f15d97faa64da0ecf5e3bce8.1645610144.git.mkletzan@redhat.com
src/util/virsystemd.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
[libvirt PATCH] util: Fix machined servicename
Posted by Martin Kletzander 2 years, 2 months ago
Commit 4e42686adef8 wrongly assumed how g_variant_new_parsed() works and broke
starting of domains on systems with systemd (machined).

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
---
 src/util/virsystemd.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/src/util/virsystemd.c b/src/util/virsystemd.c
index 0554884811a7..18bf2932a426 100644
--- a/src/util/virsystemd.c
+++ b/src/util/virsystemd.c
@@ -360,6 +360,7 @@ int virSystemdCreateMachine(const char *name,
     g_autofree char *creatorname = NULL;
     g_autofree char *slicename = NULL;
     g_autofree char *scopename = NULL;
+    g_autofree char *servicename = NULL;
     static int hasCreateWithNetwork = 1;
 
     if ((rc = virSystemdHasMachined()) < 0)
@@ -369,6 +370,7 @@ int virSystemdCreateMachine(const char *name,
         return -1;
 
     creatorname = g_strdup_printf("libvirt-%s", drivername);
+    servicename = g_strdup_printf("virt%sd.service", drivername);
 
     if (partition) {
         if (!(slicename = virSystemdMakeSliceName(partition)))
@@ -440,11 +442,10 @@ int virSystemdCreateMachine(const char *name,
         gnicindexes = g_variant_new_fixed_array(G_VARIANT_TYPE("i"),
                                                 nicindexes, nnicindexes, sizeof(int));
         gprops = g_variant_new_parsed("[('Slice', <%s>),"
-                                      " ('After', <['libvirtd.service']>),"
-                                      " ('After', <['virt%sd.service']>),"
+                                      " ('After', <['libvirtd.service', %s]>),"
                                       " ('Before', <['virt-guest-shutdown.target']>)]",
                                       slicename,
-                                      drivername);
+                                      servicename);
         message = g_variant_new("(s@ayssus@ai@a(sv))",
                                 name,
                                 guuid,
@@ -490,11 +491,10 @@ int virSystemdCreateMachine(const char *name,
         guuid = g_variant_new_fixed_array(G_VARIANT_TYPE("y"),
                                           uuid, 16, sizeof(unsigned char));
         gprops = g_variant_new_parsed("[('Slice', <%s>),"
-                                      " ('After', <['libvirtd.service']>),"
-                                      " ('After', <['virt%sd.service']>),"
+                                      " ('After', <['libvirtd.service', %s]>),"
                                       " ('Before', <['virt-guest-shutdown.target']>)]",
                                       slicename,
-                                      drivername);
+                                      servicename);
         message = g_variant_new("(s@ayssus@a(sv))",
                                 name,
                                 guuid,
-- 
2.35.1

Re: [libvirt PATCH] util: Fix machined servicename
Posted by Jiri Denemark 2 years, 2 months ago
On Wed, Feb 23, 2022 at 10:56:11 +0100, Martin Kletzander wrote:
> Commit 4e42686adef8 wrongly assumed how g_variant_new_parsed() works and broke
> starting of domains on systems with systemd (machined).
> 
> Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
> ---
>  src/util/virsystemd.c | 12 ++++++------
>  1 file changed, 6 insertions(+), 6 deletions(-)

Fixes the "GDBus.Error:org.freedesktop.DBus.Error.InvalidArgs: Invalid
unit name virt%sd.service" error for me, so

Reviewed-by: Jiri Denemark <jdenemar@redhat.com>