Thanks for the comments.
δΊ 2011-9-20 4:33, Eduardo Lima (Etrunko) ει:
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.
Maybe in this style it tells clearly the code exclude the situation
that device is a "cdrom" without "disk".
>
> 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.
This patch tried to provide libvirt-cim the capability to show instance
of empty cdrom, so it used many "if" , tried consider only the
situation about cdrom and its disk, to avoid effecting other
functionalities.
Best regards, Etrunko
--
Best Regards
Wayne Xia
mail:xiawenc@linux.vnet.ibm.com
tel:86-010-82450803