[libvirt] [PATCH v2] qemu: Regenerate VNC socket paths

Martin Kletzander mkletzan at redhat.com
Thu Apr 28 09:02:45 UTC 2016


On Thu, Apr 28, 2016 at 10:50:36AM +0200, Martin Kletzander wrote:
>On Thu, Apr 28, 2016 at 09:16:46AM +0200, Pavel Hrdina wrote:
>>On Wed, Apr 27, 2016 at 04:32:36PM +0200, Martin Kletzander wrote:
>>> Similarly to what commit 714080791778 did with some internal paths,
>>> clear vnc socket paths that were generated by us.  Having such path in
>>> the definition can cause trouble when restoring the domain.  The path is
>>> generated to the per-domain directory that contains the domain ID.
>>> However, that ID will be different upon restoration, so qemu won't be
>>> able to create that socket because the directory will not be prepared.
>>>
>>> To be able to migrate to older libvirt, skip formatting the socket path
>>> in migratable XML if it was autogenerated.
>>>
>>> Best viewed with '-C'.
>>>
>>> Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1326270
>>>
>>> Signed-off-by: Martin Kletzander <mkletzan at redhat.com>
>>> ---
>>
>>The only problem with this patch is that it won't survive libvirtd restart, so
>>until you restart libvirtd the migratable XML is correct, but after you restart
>>libvirtd the vncAutogenerated is lost.
>>
>
>Good catch!  So this should work instead (squashed in):
>

Oh noes, I hit send before the compilation finished and everything.
I'll rather send another version...

>diff --git i/src/qemu/qemu_domain.c w/src/qemu/qemu_domain.c
>index d6f704d6f91b..3b9b4fc8280a 100644
>--- i/src/qemu/qemu_domain.c
>+++ w/src/qemu/qemu_domain.c
>@@ -1660,7 +1660,7 @@ qemuCanonicalizeMachine(virDomainDefPtr def, virQEMUCapsPtr qemuCaps)
>
>
> static void
>-qemuDomainCleanupInternalPaths(virDomainDefPtr def, virQEMUDriverConfigPtr cfg)
>+qemuDomainRecheckInternalPaths(virDomainDefPtr def, virQEMUDriverConfigPtr cfg)
> {
>     size_t i = 0;
>
>@@ -1669,8 +1669,12 @@ qemuDomainCleanupInternalPaths(virDomainDefPtr def, virQEMUDriverConfigPtr cfg)
>
>         if (graphics->type == VIR_DOMAIN_GRAPHICS_TYPE_VNC &&
>             graphics->data.vnc.socket &&
>-            STRPREFIX(graphics->data.vnc.socket, cfg->libDir))
>-            VIR_FREE(graphics->data.vnc.socket);
>+            STRPREFIX(graphics->data.vnc.socket, cfg->libDir)) {
>+            if (parseFlags & VIR_DOMAIN_DEF_PARSE_INACTIVE)
>+                VIR_FREE(graphics->data.vnc.socket);
>+            else
>+                graphics->data.vnc.socketAutogenerated = true;
>+        }
>     }
> }
>
>@@ -1724,8 +1728,7 @@ qemuDomainDefPostParse(virDomainDefPtr def,
>
>     qemuDomainDefEnableDefaultFeatures(def);
>
>-    if (parseFlags & VIR_DOMAIN_DEF_PARSE_INACTIVE)
>-        qemuDomainCleanupInternalPaths(def, cfg);
>+    qemuDomainRecheckInternalPaths(def, cfg);
>
>     if (virSecurityManagerVerify(driver->securityManager, def) < 0)
>         goto cleanup;
>--
>Martin



>--
>libvir-list mailing list
>libvir-list at redhat.com
>https://www.redhat.com/mailman/listinfo/libvir-list
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20160428/54324af4/attachment-0001.sig>


More information about the libvir-list mailing list