[libvirt] [PATCH 2/8] lxc: Fix wrong error message on disk hotplug

John Ferlan jferlan at redhat.com
Fri May 6 14:51:36 UTC 2016



On 05/02/2016 10:32 AM, Peter Krempa wrote:
> Commit 36025c552 tried to improve error reporting for <disk type="lun">
> but reused the code in LXC which doesn't care about the actual disk
> type. The error messages would then contain a bogous hint that the
> config for the 'lun' device is invalid which might not be the case.
> 
> Re-do the relevant portion of the commit with the original message.
> ---
>  src/lxc/lxc_driver.c | 9 ++++++---
>  1 file changed, 6 insertions(+), 3 deletions(-)
> 
> diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c
> index 1dfbde3..7b76daf 100644
> --- a/src/lxc/lxc_driver.c
> +++ b/src/lxc/lxc_driver.c
> @@ -4106,9 +4106,6 @@ lxcDomainAttachDeviceDiskLive(virLXCDriverPtr driver,
>          goto cleanup;
>      }
> 
> -    if (!virDomainDiskSourceIsBlockType(def->src, true))
> -        goto cleanup;
> -
>      src = virDomainDiskGetSource(def);
>      if (src == NULL) {
>          virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
> @@ -4116,6 +4113,12 @@ lxcDomainAttachDeviceDiskLive(virLXCDriverPtr driver,
>          goto cleanup;
>      }
> 
> +    if (virStorageSourceIsBlockLocal(def->src)) {

Shouldn't this be "if (!virStorageSourceIsBlockLocal(def->src)" ?

ACK w/ the adjustment

John

> +        virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
> +                       _("Can't setup disk for non-block device"));
> +        goto cleanup;
> +    }
> +

FWIW:
Prior to my commit referenced above the check was:

    if (!virDomainDiskSourceIsBlockType(def->src)) {
        virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
                       _("Can't setup disk for non-block device"));

And yes, of course since virDomainDiskSourceIsBlockType checks
"src->path" first (and provides a different message), moving this after
that check seems right; otherwise, the error message is "source path not
found for device='lun' using type='%d'" if (!src->path).

All that commit did was try to have the lower layer generate the error
message. Of course in this case erroneously swapping "Can't setup disk
for non-block device" for "disk device='lun' is only valid for block
type disk source".

Still going back to 'a7785ccf' we see the call to "if
(!virDomainDiskSourceIsBlockType(def)"...


>      if (virDomainDiskIndexByName(vm->def, def->dst, true) >= 0) {
>          virReportError(VIR_ERR_OPERATION_FAILED,
>                         _("target %s already exists"), def->dst);
> 




More information about the libvir-list mailing list