On Mon, 2020-12-21 at 12:48 +0100, Martin Kletzander wrote:
> This is perfectly valid in VMWare and the VM just boots with an empty
> drive.  We
> used to just skip the whole drive before, but since we changed how we
> parse
> empty cdrom drives this now results in an error and the user not
> being able to
> even dump the XML.  Instead of erroring out, just keep the drive
> empty.
> 
> Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1903953
> 
> Signed-off-by: Martin Kletzander <mklet...@redhat.com>

Reviewed-by: Tim Wiederhake <twied...@redhat.com>

> ---
>  src/vmx/vmx.c | 14 +++++++++++---
>  1 file changed, 11 insertions(+), 3 deletions(-)
> 
> diff --git a/src/vmx/vmx.c b/src/vmx/vmx.c
> index b86dbe9ca267..40e4ef962992 100644
> --- a/src/vmx/vmx.c
> +++ b/src/vmx/vmx.c
> @@ -2447,10 +2447,18 @@ virVMXParseDisk(virVMXContext *ctx,
> virDomainXMLOptionPtr xmlopt, virConfPtr con
>                  goto cleanup;
>              }
>  
> +            tmp = ctx->parseFileName(fileName, ctx->opaque);
>              virDomainDiskSetType(*def, VIR_STORAGE_TYPE_FILE);
> -            if (!(tmp = ctx->parseFileName(fileName, ctx->opaque)))
> -                goto cleanup;
> -            virDomainDiskSetSource(*def, tmp);
> +            /* It is easily possible to have a cdrom with non-
> existing filename
> +             * as the image and vmware just provides an empty cdrom.
> +             *
> +             * See: https://bugzilla.redhat.com/1903953
> +             */
> +            if (tmp) {
> +                virDomainDiskSetSource(*def, tmp);
> +            } else {
> +                virResetLastError();
> +            }
>              VIR_FREE(tmp);
>          } else if (deviceType && STRCASEEQ(deviceType, "atapi-
> cdrom")) {
>              virDomainDiskSetType(*def, VIR_STORAGE_TYPE_BLOCK);

Reply via email to