]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
conf: Report sensible error for invalid disk name
authorMartin Kletzander <mkletzan@redhat.com>
Tue, 20 Nov 2012 13:45:56 +0000 (14:45 +0100)
committerCole Robinson <crobinso@redhat.com>
Sun, 9 Dec 2012 21:34:13 +0000 (16:34 -0500)
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.
(cherry picked from commit 03cd6e4ae8d86682986249f05f7de8eb405a12da)

src/conf/domain_conf.c
src/qemu/qemu_command.c

index 242fec8f84eab2e35a8075ea6d7989df32c969a7..c64d7ffcf36b7928010b1f8dbd41dae750238777 100644 (file)
@@ -2999,8 +2999,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:
index 13e1c6fd339515b6ccb4362200c75b5fdb9586d0..af1ff3ea136d279d8d77b62b7c352ee5427099e2 100644 (file)
@@ -8299,8 +8299,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;