On Mon, Feb 27, 2017 at 17:31:05 +0100, Pavel Hrdina wrote: > When libvirtd is started we call qemuDomainRecheckInternalPaths > to detect whether a domain has VNC socket path generated by libvirt > based on option from qemu.conf. However if we are parsing status XML > for running domain the existing socket path can be generated also if > the config XML uses the new <listen type='socket'/> element without > specifying any socket. > > The current code doesn't make difference how the socket was generated > and always marks it as "fromConfig". We need to store the > "autoGenerated" value in the status XML in order to preserve that > information. > > The difference between "fromConfig" and "autoGenerated" is important > for migration, because if the socket is based on "fromConfig" we don't > print it into the migratable XML and we assume that user has properly > configured qemu.conf on both hosts. However if the socket is based > on "autoGenerated" it means that a new feature was used and therefore > we need to leave the socket in migratable XML to make sure that if > this feature is not supported on destination the migration will fail. > > Signed-off-by: Pavel Hrdina <phrdina@xxxxxxxxxx> > --- > src/conf/domain_conf.c | 17 ++++++++++++++++- > src/qemu/qemu_domain.c | 3 ++- > 2 files changed, 18 insertions(+), 2 deletions(-) > > diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c > index 97d42fe993..db1890f8a7 100644 > --- a/src/conf/domain_conf.c > +++ b/src/conf/domain_conf.c > @@ -11543,6 +11543,7 @@ virDomainGraphicsListenDefParseXML(virDomainGraphicsListenDefPtr def, > char *network = virXMLPropString(node, "network"); > char *socketPath = virXMLPropString(node, "socket"); > char *fromConfig = virXMLPropString(node, "fromConfig"); > + char *autoGenerated = virXMLPropString(node, "autoGenerated"); > char *addressCompat = NULL; > char *socketCompat = NULL; > const char *graphicsType = virDomainGraphicsTypeToString(graphics->type); > @@ -11662,6 +11663,17 @@ virDomainGraphicsListenDefParseXML(virDomainGraphicsListenDefPtr def, > def->fromConfig = tmp != 0; > } > > + if (autoGenerated && > + flags & VIR_DOMAIN_DEF_PARSE_STATUS) { > + if (virStrToLong_i(autoGenerated, NULL, 10, &tmp) < 0) { > + virReportError(VIR_ERR_XML_ERROR, > + _("Invalid autoGenerated value: %s"), > + autoGenerated); > + goto error; > + } > + def->autoGenerated = tmp != 0; > + } > + autoGenerated is bool and should be stored as such in the XML. I don't think we need to copy the bad design from the past even if the result is going to be inconsistent since this only affects our status XML. Jirka -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list