On 28.06.2013 15:55, Daniel P. Berrange wrote: > On Fri, Jun 28, 2013 at 03:31:17PM +0200, Michal Privoznik wrote: >> For some crazy backward compatibility, a console can by just an alias to >> a serial device. This is detected in the XML formating function which >> takes the values to format from corresponding serial device. Including >> the device alias. This results in wrong alias being written into the XML >> definition: >> >> <console type='pty' tty='/dev/pts/5'> >> ... >> <alias name='serial0'/> >> </console> >> >> While holding the correct alias still in the memory, it doesn't matter. >> However, it starts to matter as soon as libvirtd is restarted and the >> (incorrect) alias is read from status file. >> --- >> src/conf/domain_conf.c | 12 +++++++++++- >> 1 file changed, 11 insertions(+), 1 deletion(-) >> >> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c >> index 011de71..61de836 100644 >> --- a/src/conf/domain_conf.c >> +++ b/src/conf/domain_conf.c >> @@ -16417,6 +16417,7 @@ virDomainDefFormatInternal(virDomainDefPtr def, >> memcpy(&console, def->serials[n], sizeof(console)); >> console.deviceType = VIR_DOMAIN_CHR_DEVICE_TYPE_CONSOLE; >> console.targetType = VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_SERIAL; >> + memcpy(&console.info, &def->consoles[n]->info, sizeof(console.info)); >> } else { >> memcpy(&console, def->consoles[n], sizeof(console)); >> } >> @@ -16427,11 +16428,20 @@ virDomainDefFormatInternal(virDomainDefPtr def, >> def->nconsoles == 0 && >> def->nserials > 0) { >> virDomainChrDef console; >> + char *alias = NULL; >> 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) >> + if (console.info.alias) { >> + if (VIR_STRDUP(alias, "console0") < 0) >> + goto error; >> + console.info.alias = alias; >> + } >> + if (virDomainChrDefFormat(buf, &console, flags) < 0) { >> + VIR_FREE(alias); >> goto error; >> + } >> + VIR_FREE(alias); > > This isn't any more correct that your previous patch. For the > dummy <console> elements, the alias *must* be copied from / > identical to the corresponding <serial> device config. > > > Daniel > So what are you saying is, it's the <serial> that has the wrong alias assigned? The output should be like this then? <serial type='pty'> <source path='/dev/pts/5'/> <target type='isa-serial' port='0'/> <alias name='console0'/> <!-- originaly was serial0 --> </serial> <console type='pty' tty='/dev/pts/5'> <source path='/dev/pts/5'/> <target type='serial' port='0'/> <alias name='console0'/> </console> Michal -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list