On Sat, Oct 7, 2023 at 4:12 PM Minglei Liu <minglei....@smartx.com> wrote:

> From: "minglei.liu" <minglei....@smartx.com>
>
> In commit 1328a83, the 'media=cdrom' attribute was removed from -drive.
> However, this attribute is still essential for usb cdrom and is still
> supported in qemu 8.1.1. Therefore, we need to reintroduce this attribute
> for usb cdrom.
>
>From the results on qemu-kvm-8.1.1-1.fc39.x86_6, the parameter 'media' is
not supported for -blockdev:
qemu-kvm -blockdev
'{"driver":"file","filename":"/tmp/vdb","node-name":"libvirt-2-storage","auto-read-only":true,"discard":"unmap","media":"cdrom"}'
qemu-kvm: -blockdev
{"driver":"file","filename":"/tmp/vdb","node-name":"libvirt-2-storage","auto-read-only":true,"discard":"unmap","media":"cdrom"}:
Parameter 'media' is unexpected

> ---
>  src/qemu/qemu_command.c                                    | 7 +++++++
>  .../disk-cdrom-bus-other.x86_64-latest.args                | 2 +-
>  2 files changed, 8 insertions(+), 1 deletion(-)
>
> diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
> index 8a7b80719f..42f3f8f740 100644
> --- a/src/qemu/qemu_command.c
> +++ b/src/qemu/qemu_command.c
> @@ -1705,6 +1705,13 @@ qemuBuildDriveStr(virDomainDiskDef *disk)
>
>      virBufferAsprintf(&opt, "if=sd,index=%d",
> virDiskNameToIndex(disk->dst));
>
> +    /* While this is a frontend attribute, it only makes sense to be used
> when
> +     * legacy -drive is used. In modern qemu the 'ide-cd' or 'scsi-cd'
> are used.
> +     * currently only usb cdrom need this attribute */
> +    if (disk->device == VIR_DOMAIN_DISK_DEVICE_CDROM &&
> +        disk->bus == VIR_DOMAIN_DISK_BUS_USB)
> +        virBufferAddLit(&opt, ",media=cdrom");
> +
>      if (disk->src->readonly)
>          virBufferAddLit(&opt, ",readonly=on");
>
> diff --git
> a/tests/qemuxml2argvdata/disk-cdrom-bus-other.x86_64-latest.args
> b/tests/qemuxml2argvdata/disk-cdrom-bus-other.x86_64-latest.args
> index de5fa083d8..38093423cf 100644
> --- a/tests/qemuxml2argvdata/disk-cdrom-bus-other.x86_64-latest.args
> +++ b/tests/qemuxml2argvdata/disk-cdrom-bus-other.x86_64-latest.args
> @@ -27,7 +27,7 @@
> XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.config \
>  -no-shutdown \
>  -boot strict=on \
>  -device
> '{"driver":"piix3-usb-uhci","id":"usb","bus":"pci.0","addr":"0x1.0x2"}' \
> --blockdev
> '{"driver":"file","filename":"/root/boot.iso","node-name":"libvirt-2-storage","auto-read-only":true,"discard":"unmap"}'
> \
> +-blockdev
> '{"driver":"file","filename":"/root/boot.iso","node-name":"libvirt-2-storage","auto-read-only":true,"discard":"unmap","media":"cdrom"}'
> \
>  -blockdev
> '{"node-name":"libvirt-2-format","read-only":true,"driver":"raw","file":"libvirt-2-storage"}'
> \
>  -device
> '{"driver":"usb-storage","bus":"usb.0","port":"1","drive":"libvirt-2-format","id":"usb-disk0","removable":false}'
> \
>  -device
> '{"driver":"usb-storage","bus":"usb.0","port":"2","id":"usb-disk1","removable":false}'
> \
> --
> 2.41.0
>
>

Reply via email to