On Mon, Jun 23, 2025 at 21:59:18 +0200, Peter Krempa via Devel wrote:
> From: Akihiko Odaki <akihiko.od...@daynix.com>
> 
> usb-storage is a compound device that automatically creates a USB mass
> storage device and a SCSI device as its backend. Unfortunately it lacks
> some configuration options that are usually present with a SCSI device,
> and cannot represent CD-ROM in particular.
> 
> Replace usb-storage with usb-bot, which can be combined with a manually
> created SCSI device. libvirt will configure the SCSI device in a way
> identical with how QEMU does for usb-storage except that now it respects
> a configuration option to represent CD-ROM.
> 
> Resolves: https://gitlab.com/libvirt/libvirt/-/issues/368
> Signed-off-by: Akihiko Odaki <akihiko.od...@daynix.com>
> Signed-off-by: Peter Krempa <pkre...@redhat.com>
> ---
>  src/qemu/qemu_alias.c                         | 20 ++++-
>  src/qemu/qemu_capabilities.c                  |  3 +-
>  src/qemu/qemu_command.c                       | 86 ++++++++++++++++---
>  src/qemu/qemu_command.h                       |  5 ++
>  src/qemu/qemu_hotplug.c                       | 18 ++++
>  src/qemu/qemu_validate.c                      | 38 ++++++--
>  tests/qemuhotplugtest.c                       |  4 +-
>  ...om-usb-empty.x86_64-latest.abi-update.args |  3 +-
>  .../disk-usb-device-model.x86_64-latest.args  |  6 +-
>  ...k-usb-device.x86_64-latest.abi-update.args | 12 ++-
>  10 files changed, 167 insertions(+), 28 deletions(-)
> 
> diff --git a/src/qemu/qemu_alias.c b/src/qemu/qemu_alias.c
> index 9d39ebd63d..67cbddd470 100644
> --- a/src/qemu/qemu_alias.c
> +++ b/src/qemu/qemu_alias.c
> @@ -268,8 +268,24 @@ qemuAssignDeviceDiskAlias(virDomainDef *def,
>              break;
> 
>          case VIR_DOMAIN_DISK_BUS_USB:
> -            diskPriv->qomName = 
> g_strdup_printf("/machine/peripheral/%s/%s.0/legacy[0]",
> -                                                disk->info.alias, 
> disk->info.alias);
> +            switch (disk->model) {
> +            case VIR_DOMAIN_DISK_MODEL_USB_STORAGE:
> +                diskPriv->qomName = 
> g_strdup_printf("/machine/peripheral/%s/%s.0/legacy[0]",
> +                                                    disk->info.alias, 
> disk->info.alias);
> +                break;
> +
> +            case VIR_DOMAIN_DISK_MODEL_USB_BOT:
> +                diskPriv->qomName = 
> g_strdup_printf("/machine/peripheral/%s-disk",

I noticed that this is supposed to be "%s-device" to format the proper
qom name:

 virsh qemu-monitor-command --pretty fedora41-mig query-block
{
  "return": [

  [...]

    {
      "io-status": "ok",
      "device": "",
      "locked": false,
      "removable": false,
      "inserted": {
        "iops_rd": 0,
        "detect_zeroes": "off",
        "active": true,
        "image": {
          "virtual-size": 104857600,
          "filename": "/tmp/img1",
          "format": "file",
          "actual-size": 104857600,
          "format-specific": {
            "type": "file",
            "data": {}
          },
          "dirty-flag": false
        },
        "iops_wr": 0,
        "ro": false,
        "node-name": "libvirt-6-storage",
        "backing_file_depth": 0,
        "drv": "file",
        "iops": 0,
        "bps_wr": 0,
        "write_threshold": 0,
        "encrypted": false,
        "bps": 0,
        "bps_rd": 0,
        "cache": {
          "no-flush": false,
          "direct": false,
          "writeback": true
        },
        "file": "/tmp/img1"
      },
      "qdev": "usb-disk0-device",

              ^^^^^^^^^^^^^^^^

      "type": "unknown"
    },

 [...]


I'll update it before pushing.

Reply via email to