[libvirt] [PATCH] xenconfig: fix conversion of <driver> to backendtype

Joao Martins joao.m.martins at oracle.com
Thu Jun 16 11:40:27 UTC 2016


On 06/16/2016 06:11 AM, Jim Fehlig wrote:
> When converting domXML to xen xl.cfg, backendtype should
> not be emitted if <driver> is not specified. Moreover,
> <driver name='file'/> should be converted to backendtype
> qdisk, similar to handling of <driver> in libxlMakeDisk()
> in libxl_conf.c.
> 
> Prior to this change, connectDomainXMLToNative would
> produce incorrect xl.cfg when the input domXML contained
> <driver name='file'/>
> 
> domXML:
> 
>   <disk type="file" device="disk">
>     <driver name="file"/>
>     <source file="/image/file/path"/>
>     <target dev="xvda" bus="xen"/>
>   </disk>
> 
> virsh domxml-to-native xen-xl domXML
> 
> disk = [ "format=raw,vdev=xvda,access=rw,backendtype=target=/image/file/path" ]
> 
> xl create xl.cfg
> config parsing error in disk specification: unknown value
> for backendtype: near `target=/image/file/path' in
> `format=raw,vdev=xvda,access=rw,backendtype=target=/image/file/path'
> 
> Signed-off-by: Jim Fehlig <jfehlig at suse.com>
FWIW looks good to me:

Reviewed-by: Joao Martins <joao.m.martins at oracle.com>

> ---
>  src/xenconfig/xen_xl.c | 16 +++++++++-------
>  1 file changed, 9 insertions(+), 7 deletions(-)
> 
> diff --git a/src/xenconfig/xen_xl.c b/src/xenconfig/xen_xl.c
> index 5879c66..d524a82 100644
> --- a/src/xenconfig/xen_xl.c
> +++ b/src/xenconfig/xen_xl.c
> @@ -857,13 +857,15 @@ xenFormatXLDisk(virConfValuePtr list, virDomainDiskDefPtr disk)
>      }
>  
>      /* backendtype */
> -    virBufferAddLit(&buf, "backendtype=");
> -    if (STREQ_NULLABLE(driver, "qemu"))
> -        virBufferAddLit(&buf, "qdisk,");
> -    else if (STREQ_NULLABLE(driver, "tap"))
> -        virBufferAddLit(&buf, "tap,");
> -    else if (STREQ_NULLABLE(driver, "phy"))
> -        virBufferAddLit(&buf, "phy,");
> +    if (driver) {
> +        virBufferAddLit(&buf, "backendtype=");
> +        if (STREQ(driver, "qemu") || STREQ(driver, "file"))
> +            virBufferAddLit(&buf, "qdisk,");
> +        else if (STREQ(driver, "tap"))
> +            virBufferAddLit(&buf, "tap,");
> +        else if (STREQ(driver, "phy"))
> +            virBufferAddLit(&buf, "phy,");
> +    }
>  
>      /* devtype */
>      if (disk->device == VIR_DOMAIN_DISK_DEVICE_CDROM)
> 




More information about the libvir-list mailing list