The <console> alias for the first <serial> device was only formatted when there were no consoles. After removing this alias manually, a round-trip via XML would add it again. However this was not the case when it was removed and a virtio console was hotplugged. https://bugzilla.redhat.com/show_bug.cgi?id=1089914 --- src/conf/domain_conf.c | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 3c0d2ff..69106bd 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -2923,6 +2923,26 @@ virDomainDefPostParseInternal(virDomainDefPtr def, } } + /* Create a stub for the first serial device in consoles if there are none */ + if (STREQ(def->os.type, "hvm") && + def->nconsoles == 0 && + def->nserials > 0) { + + virDomainChrDefPtr chr; + + if (VIR_ALLOC(chr) < 0) + return -1; + + if (VIR_APPEND_ELEMENT(def->consoles, + def->nconsoles, + chr) < 0) { + VIR_FREE(chr); + return -1; + } + def->consoles[0]->deviceType = VIR_DOMAIN_CHR_DEVICE_TYPE_CONSOLE; + def->consoles[0]->targetType = VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_SERIAL; + } + if (virDomainDefRejectDuplicateControllers(def) < 0) return -1; @@ -17739,16 +17759,6 @@ virDomainDefFormatInternal(virDomainDefPtr def, if (virDomainChrDefFormat(buf, &console, flags) < 0) goto error; } - if (STREQ(def->os.type, "hvm") && - def->nconsoles == 0 && - def->nserials > 0) { - virDomainChrDef console; - memcpy(&console, def->serials[n], sizeof(console)); - console.deviceType = VIR_DOMAIN_CHR_DEVICE_TYPE_CONSOLE; - console.targetType = VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_SERIAL; - if (virDomainChrDefFormat(buf, &console, flags) < 0) - goto error; - } for (n = 0; n < def->nchannels; n++) if (virDomainChrDefFormat(buf, def->channels[n], flags) < 0) -- 1.8.3.2 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list