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

Peter Krempa pkrempa at redhat.com
Tue Nov 20 14:27:47 UTC 2012


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




More information about the libvir-list mailing list