On 7/6/22 11:57, minglei.liu wrote: > Qemu support hotplug cdrom device with usb or scsi bus, > just unblock these devices in qemuDomainAttachDeviceDiskLiveInternal > and qemuDomainDetachPrepDisk. > > Fixes: #261 We like the full URL as it's easily clickable when viewing git log. > > Signed-off-by: minglei.liu <minglei.liu@xxxxxxxxxx> > --- > src/qemu/qemu_hotplug.c | 13 +++- > tests/qemuhotplugtest.c | 18 ++++++ > .../qemuhotplug-cdrom-scsi.xml | 6 ++ > .../qemuhotplug-cdrom-usb.xml | 6 ++ > .../qemuhotplug-base-live+cdrom-scsi.xml | 60 +++++++++++++++++++ > .../qemuhotplug-base-live+cdrom-usb.xml | 60 +++++++++++++++++++ > 6 files changed, 160 insertions(+), 3 deletions(-) > create mode 100644 tests/qemuhotplugtestdevices/qemuhotplug-cdrom-scsi.xml > create mode 100644 tests/qemuhotplugtestdevices/qemuhotplug-cdrom-usb.xml > create mode 100644 tests/qemuhotplugtestdomains/qemuhotplug-base-live+cdrom-scsi.xml > create mode 100644 tests/qemuhotplugtestdomains/qemuhotplug-base-live+cdrom-usb.xml > > diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c > index 27e68370cf..d917086023 100644 > --- a/src/qemu/qemu_hotplug.c > +++ b/src/qemu/qemu_hotplug.c > @@ -992,10 +992,9 @@ qemuDomainAttachDeviceDiskLiveInternal(virQEMUDriver *driver, > bool releaseSeclabel = false; > int ret = -1; > > - if (disk->device == VIR_DOMAIN_DISK_DEVICE_CDROM || > - disk->device == VIR_DOMAIN_DISK_DEVICE_FLOPPY) { > + if (disk->device == VIR_DOMAIN_DISK_DEVICE_FLOPPY) { > virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s", > - _("cdrom/floppy device hotplug isn't supported")); > + _("floppy device hotplug isn't supported")); > return -1; > } > > @@ -1025,6 +1024,10 @@ qemuDomainAttachDeviceDiskLiveInternal(virQEMUDriver *driver, > break; > > case VIR_DOMAIN_DISK_BUS_VIRTIO: > + if (disk->device == VIR_DOMAIN_DISK_DEVICE_CDROM) { > + virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s", > + _("cdrom device with virtio bus isn't supported")); Alignment. > + } > if (qemuDomainEnsureVirtioAddress(&releaseVirtio, vm, dev) < 0) > goto cleanup; > break; > @@ -5414,6 +5417,10 @@ qemuDomainDetachPrepDisk(virDomainObj *vm, > > case VIR_DOMAIN_DISK_DEVICE_CDROM: > case VIR_DOMAIN_DISK_DEVICE_FLOPPY: > + if ((virDomainDiskBus) disk->bus == VIR_DOMAIN_DISK_BUS_USB || > + (virDomainDiskBus) disk->bus == VIR_DOMAIN_DISK_BUS_SCSI) { No need for typecasting here. However, this allows floppy hotunplug which I believe is not supported on QEMU side. > + break; > + } > virReportError(VIR_ERR_OPERATION_UNSUPPORTED, > _("disk device type '%s' cannot be detached"), > virDomainDiskDeviceTypeToString(disk->device)); I'm fixing all these minor issues before pushing. Reviewed-by: Michal Privoznik <mprivozn@xxxxxxxxxx> Congratulations on your first libvirt contribution! Michal