On 12/17/2012 12:22 PM, Peter Krempa wrote: > From: Ken ICHIKAWA <ichikawa.ken@xxxxxxxxxxxxxx> > > This patch fixes a problem that vendor_id attribute can not be defined > when fallback attribute is not defined. > > If I define domain xml like below: > <domain> > <cpu> > <model vendor_id='aaaabbbbcccc'>core2duo</model> > </cpu> > </domain> > > In dumpxml, vendor_id is not reflected: > <domain> > <cpu mode='custom' match='exact'> > <model fallback='allow'>core2duo</model> > </cpu> > </domain> > > The expected output is: > <domain> > <cpu mode='custom' match='exact'> > <model fallback='allow' vendor_id='aaaabbbbcccc'>core2duo</model> > </cpu> > </domain> > > If the fallback attribute and vendor_id attribute is defined at the same > time, it's reflected as expected. > > Signed-off-by: Ken ICHIKAWA <ichikawa.ken@xxxxxxxxxxxxxx> > --- > src/conf/cpu_conf.c | 42 +++++++++++++++++++++--------------------- > 1 file changed, 21 insertions(+), 21 deletions(-) > > diff --git a/src/conf/cpu_conf.c b/src/conf/cpu_conf.c > index 8cb54a3..6157ed7 100644 > --- a/src/conf/cpu_conf.c > +++ b/src/conf/cpu_conf.c > @@ -300,32 +300,32 @@ virCPUDefParseXML(const xmlNodePtr node, > goto error; > } > } > + } > > - if (virXPathBoolean("boolean(./model[1]/@vendor_id)", ctxt)) { > - char *vendor_id; > - > - vendor_id = virXPathString("string(./model[1]/@vendor_id)", > - ctxt); > - if (!vendor_id || > - strlen(vendor_id) != VIR_CPU_VENDOR_ID_LENGTH) { > - virReportError(VIR_ERR_XML_ERROR, > - _("vendor_id must be exactly" > - " %d characters long"), > - VIR_CPU_VENDOR_ID_LENGTH); > + if (virXPathBoolean("boolean(./model[1]/@vendor_id)", ctxt)) { > + char *vendor_id; > + > + vendor_id = virXPathString("string(./model[1]/@vendor_id)", > + ctxt); > + if (!vendor_id || > + strlen(vendor_id) != VIR_CPU_VENDOR_ID_LENGTH) { > + virReportError(VIR_ERR_XML_ERROR, > + _("vendor_id must be exactly" > + " %d characters long"), > + VIR_CPU_VENDOR_ID_LENGTH); > + VIR_FREE(vendor_id); > + goto error; > + } > + /* ensure that the string can be passed to qemu*/ > + for (i = 0; i < strlen(vendor_id); i++) { > + if (vendor_id[i]==',') { > + virReportError(VIR_ERR_XML_ERROR, "%s", > + _("vendor id is invalid")); > VIR_FREE(vendor_id); > goto error; > } > - /* ensure that the string can be passed to qemu*/ > - for (i = 0; i < strlen(vendor_id); i++) { > - if (vendor_id[i]==',') { > - virReportError(VIR_ERR_XML_ERROR, "%s", > - _("vendor id is invalid")); > - VIR_FREE(vendor_id); > - goto error; > - } > - } > - def->vendor_id = vendor_id; > } > + def->vendor_id = vendor_id; > } > } > ACK thanks to the fact that you are cleaning it up in next patches. Martin -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list