[libvirt] [v2 02/13] Split virDomainControllerModel to virDomainControllerModelSCSI

Daniel P. Berrange berrange at redhat.com
Thu Sep 1 10:42:53 UTC 2011


On Fri, Aug 26, 2011 at 01:44:18AM +0300, Marc-André Lureau wrote:
> ---
>  src/conf/domain_conf.c   |   26 +++++++++++++++++++++++---
>  src/conf/domain_conf.h   |   18 ++++++++++--------
>  src/esx/esx_driver.c     |    8 ++++----
>  src/libvirt_private.syms |    4 ++--
>  src/vmx/vmx.c            |   32 ++++++++++++++++----------------
>  tests/xml2vmxtest.c      |    2 +-
>  6 files changed, 56 insertions(+), 34 deletions(-)
> 
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index ce1f3c5..5e91d54 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -195,7 +195,7 @@ VIR_ENUM_IMPL(virDomainController, VIR_DOMAIN_CONTROLLER_TYPE_LAST,
>                "virtio-serial",
>                "ccid")
>  
> -VIR_ENUM_IMPL(virDomainControllerModel, VIR_DOMAIN_CONTROLLER_MODEL_LAST,
> +VIR_ENUM_IMPL(virDomainControllerModelSCSI, VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LAST,
>                "auto",
>                "buslogic",
>                "lsilogic",
> @@ -2455,6 +2455,16 @@ no_memory:
>  }
>  
>  
> +static int
> +virDomainControllerModelTypeFromString(const virDomainControllerDefPtr def,
> +                                       const char *model)
> +{
> +    if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_SCSI)
> +        return virDomainControllerModelSCSITypeFromString(model);
> +
> +    return -1;
> +}
> +
>  /* Parse the XML definition for a controller
>   * @param node XML nodeset to parse for controller definition
>   */
> @@ -2492,7 +2502,7 @@ virDomainControllerDefParseXML(xmlNodePtr node,
>  
>      model = virXMLPropString(node, "model");
>      if (model) {
> -        if ((def->model = virDomainControllerModelTypeFromString(model)) < 0) {
> +        if ((def->model = virDomainControllerModelTypeFromString(def, model)) < 0) {
>              virDomainReportError(VIR_ERR_INTERNAL_ERROR,
>                                   _("Unknown model type '%s'"), model);
>              goto error;
> @@ -8733,6 +8743,16 @@ virDomainDiskDefFormat(virBufferPtr buf,
>      return 0;
>  }
>  
> +static const char *
> +virDomainControllerModelTypeToString(virDomainControllerDefPtr def,
> +                                     int model)
> +{
> +    if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_SCSI)
> +        return virDomainControllerModelSCSITypeToString(model);
> +
> +    return NULL;
> +}
> +
>  static int
>  virDomainControllerDefFormat(virBufferPtr buf,
>                               virDomainControllerDefPtr def,
> @@ -8748,7 +8768,7 @@ virDomainControllerDefFormat(virBufferPtr buf,
>      }
>  
>      if (def->model != -1) {
> -        model = virDomainControllerModelTypeToString(def->model);
> +        model = virDomainControllerModelTypeToString(def, def->model);
>  
>          if (!model) {
>              virDomainReportError(VIR_ERR_INTERNAL_ERROR,
> diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
> index 2cc9b06..8a4cd11 100644
> --- a/src/conf/domain_conf.h
> +++ b/src/conf/domain_conf.h
> @@ -257,14 +257,16 @@ enum virDomainControllerType {
>  };
>  
>  
> -enum virDomainControllerModel {
> -    VIR_DOMAIN_CONTROLLER_MODEL_AUTO,
> -    VIR_DOMAIN_CONTROLLER_MODEL_BUSLOGIC,
> -    VIR_DOMAIN_CONTROLLER_MODEL_LSILOGIC,
> -    VIR_DOMAIN_CONTROLLER_MODEL_LSISAS1068,
> -    VIR_DOMAIN_CONTROLLER_MODEL_VMPVSCSI,
> +enum virDomainControllerModelSCSI {
> +    VIR_DOMAIN_CONTROLLER_MODEL_SCSI_AUTO,
> +    VIR_DOMAIN_CONTROLLER_MODEL_SCSI_BUSLOGIC,
> +    VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSILOGIC,
> +    VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSISAS1068,
> +    VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VMPVSCSI,
> +
> +    VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LAST
> +};
>  
> -    VIR_DOMAIN_CONTROLLER_MODEL_LAST
>  };
>  
>  typedef struct _virDomainVirtioSerialOpts virDomainVirtioSerialOpts;
> @@ -1673,7 +1675,7 @@ VIR_ENUM_DECL(virDomainDiskIo)
>  VIR_ENUM_DECL(virDomainIoEventFd)
>  VIR_ENUM_DECL(virDomainVirtioEventIdx)
>  VIR_ENUM_DECL(virDomainController)
> -VIR_ENUM_DECL(virDomainControllerModel)
> +VIR_ENUM_DECL(virDomainControllerModelSCSI)
>  VIR_ENUM_DECL(virDomainFS)
>  VIR_ENUM_DECL(virDomainFSAccessMode)
>  VIR_ENUM_DECL(virDomainNet)
> diff --git a/src/esx/esx_driver.c b/src/esx/esx_driver.c
> index c097651..e603399 100644
> --- a/src/esx/esx_driver.c
> +++ b/src/esx/esx_driver.c
> @@ -412,16 +412,16 @@ esxAutodetectSCSIControllerModel(virDomainDiskDefPtr def, int *model,
>  
>      if (STRCASEEQ(vmDiskFileInfo->controllerType,
>                    "VirtualBusLogicController")) {
> -        *model = VIR_DOMAIN_CONTROLLER_MODEL_BUSLOGIC;
> +        *model = VIR_DOMAIN_CONTROLLER_MODEL_SCSI_BUSLOGIC;
>      } else if (STRCASEEQ(vmDiskFileInfo->controllerType,
>                           "VirtualLsiLogicController")) {
> -        *model = VIR_DOMAIN_CONTROLLER_MODEL_LSILOGIC;
> +        *model = VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSILOGIC;
>      } else if (STRCASEEQ(vmDiskFileInfo->controllerType,
>                           "VirtualLsiLogicSASController")) {
> -        *model = VIR_DOMAIN_CONTROLLER_MODEL_LSISAS1068;
> +        *model = VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSISAS1068;
>      } else if (STRCASEEQ(vmDiskFileInfo->controllerType,
>                           "ParaVirtualSCSIController")) {
> -        *model = VIR_DOMAIN_CONTROLLER_MODEL_VMPVSCSI;
> +        *model = VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VMPVSCSI;
>      } else {
>          ESX_ERROR(VIR_ERR_INTERNAL_ERROR,
>                    _("Found unexpected controller model '%s' for disk '%s'"),
> diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
> index acae122..91ecd7b 100644
> --- a/src/libvirt_private.syms
> +++ b/src/libvirt_private.syms
> @@ -248,8 +248,8 @@ virDomainConfigFile;
>  virDomainControllerDefFree;
>  virDomainControllerInsert;
>  virDomainControllerInsertPreAlloced;
> -virDomainControllerModelTypeFromString;
> -virDomainControllerModelTypeToString;
> +virDomainControllerModelSCSITypeFromString;
> +virDomainControllerModelSCSITypeToString;
>  virDomainControllerTypeToString;
>  virDomainCpuSetFormat;
>  virDomainCpuSetParse;
> diff --git a/src/vmx/vmx.c b/src/vmx/vmx.c
> index 08c2716..dff3599 100644
> --- a/src/vmx/vmx.c
> +++ b/src/vmx/vmx.c
> @@ -483,8 +483,8 @@ def->parallels[0]...
>  /* directly map the virDomainControllerModel to virVMXSCSIControllerModel,
>   * this is good enough for now because all virDomainControllerModel values
>   * are actually SCSI controller models in the ESX case */
> -VIR_ENUM_DECL(virVMXSCSIControllerModel)
> -VIR_ENUM_IMPL(virVMXSCSIControllerModel, VIR_DOMAIN_CONTROLLER_MODEL_LAST,
> +VIR_ENUM_DECL(virVMXControllerModelSCSI)
> +VIR_ENUM_IMPL(virVMXControllerModelSCSI, VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LAST,
>                "auto", /* just to match virDomainControllerModel, will never be used */
>                "buslogic",
>                "lsilogic",
> @@ -1040,7 +1040,7 @@ virVMXHandleLegacySCSIDiskDriverName(virDomainDefPtr def,
>          *tmp = c_tolower(*tmp);
>      }
>  
> -    model = virDomainControllerModelTypeFromString(disk->driverName);
> +    model = virDomainControllerModelSCSITypeFromString(disk->driverName);
>  
>      if (model < 0) {
>          VMX_ERROR(VIR_ERR_INTERNAL_ERROR,
> @@ -1068,7 +1068,7 @@ virVMXHandleLegacySCSIDiskDriverName(virDomainDefPtr def,
>          VMX_ERROR(VIR_ERR_INTERNAL_ERROR,
>                    _("Inconsistent SCSI controller model ('%s' is not '%s') "
>                      "for SCSI controller index %d"), disk->driverName,
> -                  virDomainControllerModelTypeToString(controller->model),
> +                  virDomainControllerModelSCSITypeToString(controller->model),
>                    controller->idx);
>          return -1;
>      }
> @@ -1120,7 +1120,7 @@ virVMXGatherSCSIControllers(virVMXContext *ctx, virDomainDefPtr def,
>              continue;
>          }
>  
> -        if (controller->model == VIR_DOMAIN_CONTROLLER_MODEL_AUTO &&
> +        if (controller->model == VIR_DOMAIN_CONTROLLER_MODEL_SCSI_AUTO &&
>              ctx->autodetectSCSIControllerModel != NULL) {
>              count = 0;
>  
> @@ -1157,15 +1157,15 @@ virVMXGatherSCSIControllers(virVMXContext *ctx, virDomainDefPtr def,
>          }
>  
>          if (controller->model != -1 &&
> -            controller->model != VIR_DOMAIN_CONTROLLER_MODEL_BUSLOGIC &&
> -            controller->model != VIR_DOMAIN_CONTROLLER_MODEL_LSILOGIC &&
> -            controller->model != VIR_DOMAIN_CONTROLLER_MODEL_LSISAS1068 &&
> -            controller->model != VIR_DOMAIN_CONTROLLER_MODEL_VMPVSCSI) {
> +            controller->model != VIR_DOMAIN_CONTROLLER_MODEL_SCSI_BUSLOGIC &&
> +            controller->model != VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSILOGIC &&
> +            controller->model != VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSISAS1068 &&
> +            controller->model != VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VMPVSCSI) {
>              VMX_ERROR(VIR_ERR_INTERNAL_ERROR,
>                        _("Expecting domain XML attribute 'model' of entry "
>                          "'controller' to be 'buslogic' or 'lsilogic' or "
>                          "'lsisas1068' or 'vmpvscsi' but found '%s'"),
> -                      virDomainControllerModelTypeToString(controller->model));
> +                      virDomainControllerModelSCSITypeToString(controller->model));
>              goto cleanup;
>          }
>  
> @@ -1869,13 +1869,13 @@ virVMXParseSCSIController(virConfPtr conf, int controller, bool *present,
>              *tmp = c_tolower(*tmp);
>          }
>  
> -        *virtualDev = virVMXSCSIControllerModelTypeFromString(virtualDev_string);
> +        *virtualDev = virVMXControllerModelSCSITypeFromString(virtualDev_string);
>  
>          if (*virtualDev == -1 ||
> -            (*virtualDev != VIR_DOMAIN_CONTROLLER_MODEL_BUSLOGIC &&
> -             *virtualDev != VIR_DOMAIN_CONTROLLER_MODEL_LSILOGIC &&
> -             *virtualDev != VIR_DOMAIN_CONTROLLER_MODEL_LSISAS1068 &&
> -             *virtualDev != VIR_DOMAIN_CONTROLLER_MODEL_VMPVSCSI)) {
> +            (*virtualDev != VIR_DOMAIN_CONTROLLER_MODEL_SCSI_BUSLOGIC &&
> +             *virtualDev != VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSILOGIC &&
> +             *virtualDev != VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSISAS1068 &&
> +             *virtualDev != VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VMPVSCSI)) {
>              VMX_ERROR(VIR_ERR_INTERNAL_ERROR,
>                        _("Expecting VMX entry '%s' to be 'buslogic' or 'lsilogic' "
>                          "or 'lsisas1068' or 'pvscsi' but found '%s'"),
> @@ -3088,7 +3088,7 @@ virVMXFormatConfig(virVMXContext *ctx, virCapsPtr caps, virDomainDefPtr def,
>  
>              if (scsi_virtualDev[i] != -1) {
>                  virBufferAsprintf(&buffer, "scsi%d.virtualDev = \"%s\"\n", i,
> -                                  virVMXSCSIControllerModelTypeToString
> +                                  virVMXControllerModelSCSITypeToString
>                                      (scsi_virtualDev[i]));
>              }
>          }
> diff --git a/tests/xml2vmxtest.c b/tests/xml2vmxtest.c
> index 439ddc8..77b1611 100644
> --- a/tests/xml2vmxtest.c
> +++ b/tests/xml2vmxtest.c
> @@ -143,7 +143,7 @@ static int
>  testAutodetectSCSIControllerModel(virDomainDiskDefPtr def ATTRIBUTE_UNUSED,
>                                    int *model, void *opaque ATTRIBUTE_UNUSED)
>  {
> -    *model = VIR_DOMAIN_CONTROLLER_MODEL_LSILOGIC;
> +    *model = VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSILOGIC;
>  
>      return 0;
>  }

ACK


Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the libvir-list mailing list