[Libvirt-cim] [PATCH] Fix the problem that libvirt-cim can't find cdrom device that do not have disk
Eduardo Lima (Etrunko)
eblima at linux.vnet.ibm.com
Mon Sep 19 20:33:12 UTC 2011
On 09/16/2011 03:58 AM, Wayne Xia wrote:
[snip]
> diff -r fb09136deb49 -r 04b73e1cdc30 libxkutil/xmlgen.c
> --- a/libxkutil/xmlgen.c Tue Aug 30 08:48:36 2011 -0700
> +++ b/libxkutil/xmlgen.c Fri Sep 16 14:24:35 2011 +0800
> @@ -110,10 +110,15 @@
> xmlNewProp(tmp, BAD_CAST "cache", BAD_CAST dev->cache);
> }
>
> - tmp = xmlNewChild(disk, NULL, BAD_CAST "source", NULL);
> - if (tmp == NULL)
> - return XML_ERROR;
> - xmlNewProp(tmp, BAD_CAST "file", BAD_CAST dev->source);
> + if ((XSTREQ(dev->device, "cdrom")) &&
> + (XSTREQ(dev->source, ""))) {
> + /* do nothing */
> + } else {
> + tmp = xmlNewChild(disk, NULL, BAD_CAST "source", NULL);
> + if (tmp == NULL)
> + return XML_ERROR;
> + xmlNewProp(tmp, BAD_CAST "file", BAD_CAST dev->source);
> + }
Well, I don't really like these types of conditionals where you actually
only do something in the else block, especially because you can always
achieve the same results by denying things.
>
> tmp = xmlNewChild(disk, NULL, BAD_CAST "target", NULL);
> if (tmp == NULL)
> diff -r fb09136deb49 -r 04b73e1cdc30 src/Virt_VirtualSystemManagementService.c
> --- a/src/Virt_VirtualSystemManagementService.c Tue Aug 30 08:48:36 2011 -0700
> +++ b/src/Virt_VirtualSystemManagementService.c Fri Sep 16 14:24:35 2011 +0800
> @@ -879,6 +879,12 @@
> dev->dev.disk.device = strdup("disk");
> else if (type == VIRT_DISK_TYPE_CDROM) {
> dev->dev.disk.device = strdup("cdrom");
> + if ((XSTREQ(dev->dev.disk.source, "/dev/null")) ||
> + (XSTREQ(dev->dev.disk.source, ""))) {
> + dev->dev.disk.disk_type = DISK_FILE;
> + free(dev->dev.disk.source);
> + dev->dev.disk.source = strdup("");
> + }
> if (dev->dev.disk.disk_type == DISK_UNKNOWN)
> dev->dev.disk.disk_type = DISK_PHY;
> }
All in all the patch delivers the funcionality, so if you fix that logic
I give you a +1.
Best regards, Etrunko
--
Eduardo de Barros Lima
Software Engineer, Open Virtualization
Linux Technology Center - IBM/Brazil
eblima at br.ibm.com
More information about the Libvirt-cim
mailing list