[PATCH] qemu: support hotplug cdrom with usb/scsi bus
Michal Prívozník
mprivozn at redhat.com
Wed Jul 20 14:57:01 UTC 2022
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 at smartx.com>
> ---
> 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 at redhat.com>
Congratulations on your first libvirt contribution!
Michal
More information about the libvir-list
mailing list