On 11/20/12 14:55, Martin Kletzander wrote:
The error "... but the cause is unknown" appeared for XMLs
similar to
this:
<disk type='file' device='cdrom'>
<driver name='qemu' type='raw'/>
<source file='/dev/zero'/>
<target dev='sr0'/>
</disk>
Notice unsupported disk type (for the driver), but also no address
specified. The first part is not a problem and we should not abort
immediately because of that, but the combination with the address
unknown was causing an unspecified error.
---
src/util/util.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/util/util.c b/src/util/util.c
index 75b18c1..d5b2c97 100644
--- a/src/util/util.c
+++ b/src/util/util.c
@@ -2189,8 +2189,12 @@ int virDiskNameToIndex(const char *name) {
}
}
- if (!ptr)
+ if (!ptr) {
+ virReportError(VIR_ERR_XML_ERROR,
+ _("Unknown disk name '%s' and no address
specified"),
+ name);
return -1;
+ }
Some of the call paths of this function the callers do their own error
reporting (see src/qemu/qemu_command.c) based on the return value. This
should be consolidated.
In case of this function I'd probably rather go for adding the error
message on the appropriate places as the inability to parse the disk ID
is ignored on some calls (maybe that should be fixed in the first place
and than the error reporting is okay here.)
for (i = 0; *ptr; i++) {
idx = (idx + (i < 1 ? 0 : 1)) * 26;
Peter