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.
While fixing this, I added an error to one place where this return
value was not managed properly.
---
v2:
- Error moved from virDiskNameToIndex(a)util/util.c to
virDomainDiskDefAssignAddress(a)conf/domain_conf.c
- One more error added into qemuParseCommandLine(a)qemu/qemu_command.c
src/conf/domain_conf.c | 6 +++++-
src/qemu/qemu_command.c | 6 +++++-
2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index ed21f0f..3a1be02 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -3063,8 +3063,12 @@ int
virDomainDiskDefAssignAddress(virCapsPtr caps, virDomainDiskDefPtr def)
{
int idx = virDiskNameToIndex(def->dst);
- if (idx < 0)
+ if (idx < 0) {
+ virReportError(VIR_ERR_XML_ERROR,
+ _("Unknown disk name '%s' and no address
specified"),
+ def->dst);
return -1;
+ }
switch (def->bus) {
case VIR_DOMAIN_DISK_BUS_SCSI:
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 22bb209..097de9b 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -8342,8 +8342,12 @@ virDomainDefPtr qemuParseCommandLine(virCapsPtr caps,
!disk->dst)
goto no_memory;
- if (virDomainDiskDefAssignAddress(caps, disk) < 0)
+ if (virDomainDiskDefAssignAddress(caps, disk) < 0) {
+ virReportError(VIR_ERR_INTERNAL_ERROR,
+ _("Cannot assign address for device name
'%s'"),
+ disk->dst);
goto error;
+ }
if (VIR_REALLOC_N(def->disks, def->ndisks+1) < 0)
goto no_memory;
--
1.8.0