[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [libvirt] [PATCH] conf: Report sensible error for invalid disk name



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


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]