[Libvirt-cim] [PATCH] Override devices in reference configuration, where the ID is the same

Kaitlin Rupert kaitlin at linux.vnet.ibm.com
Fri Aug 15 21:28:13 UTC 2008


> 
> +static char *add_device_nodup(struct virt_device *dev,
> +                              struct virt_device *list,
> +                              int max,
> +                              int *index)
> +{
> +        int i;
> +
> +        for (i = 0; i < *index; i++) {
> +                struct virt_device *ptr = &list[i];
> +
> +                if (STREQC(ptr->id, dev->id)) {
> +                        CU_DEBUG("Overriding device %s from refconf", ptr->id);
> +                        cleanup_virt_device(ptr);
> +                        memcpy(ptr, dev, sizeof(*ptr));
> +                        return NULL;
> +                }
> +        }
> +
> +        if (*index == max)
> +                return "Internal error: no more device slots";

I don't think this handles the case where the user supplies a disk/net 
RASD for the ResourceSettings that is different from the disk/net device 
specified in the ReferencedConfiguration guest.

Let say the user only specifies the RefConfig plus an additional net 
device for the ResourceSettings.  The value for count is 1 (because 
that's the size of the array passed in).  The net device isn't a dup, so 
the value of index is bumped up to 1, and we return an error.

Some debug I added:

Virt_VirtualSystemManagementService.c(643): trying to add 
aa:aa:aa:00:00:00 - the value of refconf dev id is 11:22:33:aa:bb:cc
Virt_VirtualSystemManagementService.c(652): *index is 1, max is 1
Virt_VirtualSystemManagementService.c(983): Failed to classify 
resources: Internal error: no more device slots


-- 
Kaitlin Rupert
IBM Linux Technology Center
kaitlin at linux.vnet.ibm.com




More information about the Libvirt-cim mailing list