diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index cb566d424f..807aaf8864 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -208,6 +208,7 @@ qemuDomainChangeEjectableMedia(virQEMUDriverPtr driver, int ret = -1, rc; char *driveAlias = NULL; qemuDomainObjPrivatePtr priv = vm->privateData; + qemuDomainDiskPrivatePtr diskPriv = QEMU_DOMAIN_DISK_PRIVATE(disk); const char *format = NULL; char *sourcestr = NULL; @@ -236,8 +237,9 @@ qemuDomainChangeEjectableMedia(virQEMUDriverPtr driver, if (qemuDomainObjExitMonitor(driver, vm) < 0) goto cleanup; - /* If the tray change event is supported wait for it to open. */ - if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_DEVICE_TRAY_MOVED)) { + /* If the tray is present and tray change event is supported wait for it to open. */ + if (diskPriv->tray && + virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_DEVICE_TRAY_MOVED)) { if (qemuHotplugWaitForTrayEject(driver, vm, disk, driveAlias, force) < 0) goto error; } else { @@ -247,8 +249,6 @@ qemuDomainChangeEjectableMedia(virQEMUDriverPtr driver, } if (!virStorageSourceIsEmpty(newsrc)) { - qemuDomainDiskPrivatePtr diskPriv = QEMU_DOMAIN_DISK_PRIVATE(disk); - if (qemuGetDriveSourceString(newsrc, diskPriv->secinfo, &sourcestr) < 0) goto error;