From 7a1452f5334f98680187ae6d11fe2a49c1b38548 Mon Sep 17 00:00:00 2001 From: Stefan Bader Date: Thu, 27 Mar 2014 17:55:03 +0100 Subject: [PATCH] libxl: Set disk format for empty cdrom device The XML config for a CDROM device can be without a source path, indicating that there is no media present. Without this change the libxl driver fails to start a guest in that case because the libxl library checks for the LIBXL_DISK_FORMAT_EMPTY format type and tries to stat the NULL pointer that gets passed on. > libxl: error: libxl_device.c:265:libxl__device_disk_set_backend: > Disk vdev=hdc failed to stat: (null): Bad address Signed-off-by: Stefan Bader --- src/libxl/libxl_conf.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c index de6f7ce5ad..b8de72a7c7 100644 --- a/src/libxl/libxl_conf.c +++ b/src/libxl/libxl_conf.c @@ -827,6 +827,9 @@ libxlMakeDisk(virDomainDiskDefPtr l_disk, libxl_device_disk *x_disk) x_disk->removable = 1; x_disk->readwrite = !l_disk->readonly; x_disk->is_cdrom = l_disk->device == VIR_DOMAIN_DISK_DEVICE_CDROM ? 1 : 0; + /* An empty CDROM must have the empty format, otherwise libxl fails. */ + if (x_disk->is_cdrom && !x_disk->pdev_path) + x_disk->format = LIBXL_DISK_FORMAT_EMPTY; if (l_disk->transient) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("libxenlight does not support transient disks")); -- GitLab