[Libvirt-cim] [PATCH 3/3] VSMS: Support for domains with controller devices

Boris Fiuczynski fiuczy at linux.vnet.ibm.com
Fri Mar 14 14:40:24 UTC 2014


On 03/14/2014 01:56 PM, John Ferlan wrote:
> From: Xu Wang <gesaint at linux.vnet.ibm.com>
>
> Support being able to convert the Controller RASD into a virtual device
> Signed-off-by: Xu Wang <gesaint at linux.vnet.ibm.com>
>
> Signed-off-by: John Ferlan <jferlan at redhat.com>
> ---
>   src/Virt_VirtualSystemManagementService.c | 76 +++++++++++++++++++++++++++++++
>   1 file changed, 76 insertions(+)
>
> diff --git a/src/Virt_VirtualSystemManagementService.c b/src/Virt_VirtualSystemManagementService.c
> index 3e7785e..26de59d 100644
> --- a/src/Virt_VirtualSystemManagementService.c
> +++ b/src/Virt_VirtualSystemManagementService.c
> @@ -1838,6 +1838,53 @@ static const char *input_rasd_to_vdev(CMPIInstance *inst,
>           return NULL;
>   }
>
> +static const char *controller_rasd_to_vdev(CMPIInstance *inst,
> +                                           struct virt_device *dev)
> +{
> +        const char *val = NULL;
> +        const char *msg = NULL;
> +        int ret;
> +
> +        if (cu_get_str_prop(inst, "ResourceSubType", &val) != CMPI_RC_OK) {
> +                msg = "ControllerRASD ResourceSubType field not valid";
> +                goto out;
> +        }
> +        dev->dev.controller.type = strdup(val);
> +
> +        /* Required fields */
> +        if (cu_get_u64_prop(inst, "Index",
> +                            &dev->dev.controller.index) != CMPI_RC_OK) {
> +                msg = "ControllerRASD Index field not valid";
> +                goto out;
> +        }
As I wrote elsewhere this is going to prevent the libvirt-cim user from 
using the libvirt auto assignment for the index.

> +
> +        /* Formulate our instance id from controller, controller type,
> +         * and index value. This should be unique enough.
> +         */

...

> @@ -3029,6 +3102,7 @@ static CMPIStatus resource_del(struct domain *dominfo,
>                   if (STREQ(dev->id, devid)) {
>                           if ((type == CIM_RES_TYPE_GRAPHICS) ||
>                               (type == CIM_RES_TYPE_CONSOLE)  ||
> +                            (type == CIM_RES_TYPE_CONTROLLER) ||
What is the reason for adding the controller here?

>                               (type == CIM_RES_TYPE_INPUT))
>                                   cu_statusf(_BROKER, &s, CMPI_RC_OK, "");
>                           else {
> @@ -3111,6 +3185,7 @@ static CMPIStatus resource_add(struct domain *dominfo,
>

Why is the controller instance not added to a running domain?
Instead of restricting it in the if statement below all I think should 
be done is this (before the if in the patch below.)
         if (type == CIM_RES_TYPE_CONTROLLER &&
             dev != NULL && dev->id == NULL) {
                 cu_statusf(_BROKER, &s,
                            CMPI_RC_ERR_FAILED,
                            "Add resource failed: Index property is 
required.");
                 goto out;
         }

>           if ((type == CIM_RES_TYPE_GRAPHICS) ||
>               (type == CIM_RES_TYPE_INPUT) ||
> +            (type == CIM_RES_TYPE_CONTROLLER) ||
>               (type == CIM_RES_TYPE_CONSOLE)) {
>                   (*count)++;
>                   cu_statusf(_BROKER, &s, CMPI_RC_OK, "");
> @@ -3188,6 +3263,7 @@ static CMPIStatus resource_mod(struct domain *dominfo,
>
>                           if ((type == CIM_RES_TYPE_GRAPHICS) ||
>                               (type == CIM_RES_TYPE_INPUT)    ||
> +                            (type == CIM_RES_TYPE_CONTROLLER) ||
What is the reason for adding the controller here?

>                               (type == CIM_RES_TYPE_CONSOLE))
>                                   cu_statusf(_BROKER, &s, CMPI_RC_OK, "");
>                           else {
>


-- 
Mit freundlichen Grüßen/Kind regards
    Boris Fiuczynski

IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Martina Köderitz
Geschäftsführung: Dirk Wittkopp
Sitz der Gesellschaft: Böblingen
Registergericht: Amtsgericht Stuttgart, HRB 243294




More information about the Libvirt-cim mailing list