[libvirt] [PATCH 1/4] conf: cpu: Fix parsing of vendor_id
Martin Kletzander
mkletzan at redhat.com
Mon Dec 17 14:55:30 UTC 2012
On 12/17/2012 12:22 PM, Peter Krempa wrote:
> From: Ken ICHIKAWA <ichikawa.ken at jp.fujitsu.com>
>
> 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 at jp.fujitsu.com>
> ---
> 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
More information about the libvir-list
mailing list