[libvirt] [PATCHv2 05/16] storage: use enum for disk driver type

Eric Blake eblake at redhat.com
Tue Oct 16 23:31:31 UTC 2012


On 10/13/2012 04:00 PM, Eric Blake wrote:
> Actually use the enum in the domain conf structure.
> 
> * src/conf/domain_conf.h (_virDomainDiskDef): Store enum rather
> than string for disk type.
> * src/conf/domain_conf.c (virDomainDiskDefFree)
> (virDomainDiskDefParseXML, virDomainDiskDefFormat)
> (virDomainDiskDefForeachPath): Adjust users.
> * src/xenxs/xen_sxpr.c (xenParseSxprDisks, xenFormatSxprDisk):
> Likewise.
> * src/xenxs/xen_xm.c (xenParseXM, xenFormatXMDisk): Likewise.
> * src/vbox/vbox_tmpl.c (vboxAttachDrives): Likewise.
> * src/libxl/libxl_conf.c (libxlMakeDisk): Likewise.
> ---

> 
> @@ -4158,23 +4152,34 @@ virDomainDiskDefParseXML(virCapsPtr caps,
>      def->wwn = wwn;
>      wwn = NULL;
> 
> -    if (!def->driverType &&
> -        caps->defaultDiskDriverType &&
> -        !(def->driverType = strdup(virStorageFileFormatTypeToString(
> -                                       caps->defaultDiskDriverType))))
> -        goto no_memory;
> +    if (driverType) {
> +        def->format = virStorageFileFormatTypeFromString(driverType);
> +        if (def->format <= 0) {
> +            virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
> +                           _("unknown driver format value '%s'"),
> +                           driverType);
> +            goto error;
> +        }
> +    } else {
> +        def->format = caps->defaultDiskDriverType;
> +    }

> @@ -5209,11 +5210,10 @@ qemuBuildCommandLine(virConnectPtr conn,
> 
>              if (disk->type == VIR_DOMAIN_DISK_TYPE_DIR) {
>                  /* QEMU only supports magic FAT format for now */
> -                if (disk->driverType &&
> -                    STRNEQ(disk->driverType, "fat")) {
> +                if (disk->format && disk->format != VIR_STORAGE_FILE_FAT) {

Going by inspection, I need a tweak here - in the old code, if you had a
<disk type='dir'> but no <driver type='fat'/>, then disk->driverType was
NULL, which we treated as a synonym for auto.  But in the new code,
disk->format defaults to whatever the driver capabilities state, which
in patch 4/16 is either AUTO (-1) or RAW (1), so for the same behavior,
this needs to check 'disk->format > 0' to work correctly for AUTO, as
well as tweak domain_conf to not apply driver capability defaults to dir
or network protocols (formats only make sense on files and block
devices).  Most of the rest of this patch did it correctly.

-- 
Eric Blake   eblake at redhat.com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 617 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20121016/2151979d/attachment-0001.sig>


More information about the libvir-list mailing list