mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 03:12:22 +00:00
qemu: Add capability flag for usb-storage
Allow use of the usb-storage device only if the new capability flag QEMU_CAPS_DEVICE_USB_STORAGE is set, which it is for qemu(-kvm) versions >= 0.12.1.2-rhel62-beta. Signed-off-by: Peter Krempa <pkrempa@redhat.com>
This commit is contained in:
parent
68b9fa6423
commit
071249771b
@ -237,6 +237,8 @@ VIR_ENUM_IMPL(virQEMUCaps, QEMU_CAPS_LAST,
|
||||
"dmi-to-pci-bridge",
|
||||
"i440fx-pci-hole64-size",
|
||||
"q35-pci-hole64-size",
|
||||
|
||||
"usb-storage", /* 155 */
|
||||
);
|
||||
|
||||
struct _virQEMUCaps {
|
||||
@ -1385,6 +1387,7 @@ struct virQEMUCapsStringFlags virQEMUCapsObjectTypes[] = {
|
||||
{ "vfio-pci", QEMU_CAPS_DEVICE_VFIO_PCI },
|
||||
{ "scsi-generic", QEMU_CAPS_DEVICE_SCSI_GENERIC },
|
||||
{ "i82801b11-bridge", QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE },
|
||||
{ "usb-storage", QEMU_CAPS_DEVICE_USB_STORAGE },
|
||||
};
|
||||
|
||||
static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsVirtioBlk[] = {
|
||||
|
@ -193,6 +193,7 @@ enum virQEMUCapsFlags {
|
||||
QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE = 152, /* -device i82801b11-bridge */
|
||||
QEMU_CAPS_I440FX_PCI_HOLE64_SIZE = 153, /* i440FX-pcihost.pci-hole64-size */
|
||||
QEMU_CAPS_Q35_PCI_HOLE64_SIZE = 154, /* q35-pcihost.pci-hole64-size */
|
||||
QEMU_CAPS_DEVICE_USB_STORAGE = 155, /* -device usb-storage */
|
||||
|
||||
QEMU_CAPS_LAST, /* this must always be the last item */
|
||||
};
|
||||
|
@ -4351,6 +4351,13 @@ qemuBuildDriveDevStr(virDomainDefPtr def,
|
||||
goto error;
|
||||
break;
|
||||
case VIR_DOMAIN_DISK_BUS_USB:
|
||||
if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_USB_STORAGE)) {
|
||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
||||
_("This QEMU doesn't support '-device "
|
||||
"usb-storage'"));
|
||||
goto error;
|
||||
|
||||
}
|
||||
virBufferAddLit(&opt, "usb-storage");
|
||||
|
||||
if (qemuBuildDeviceAddressStr(&opt, def, &disk->info, qemuCaps) < 0)
|
||||
|
@ -514,7 +514,8 @@ mymain(void)
|
||||
QEMU_CAPS_DEVICE_USB_SERIAL,
|
||||
QEMU_CAPS_DEVICE_USB_NET,
|
||||
QEMU_CAPS_DEVICE_PCI_BRIDGE,
|
||||
QEMU_CAPS_DEVICE_SCSI_GENERIC);
|
||||
QEMU_CAPS_DEVICE_SCSI_GENERIC,
|
||||
QEMU_CAPS_DEVICE_USB_STORAGE);
|
||||
DO_TEST("qemu-kvm-0.12.1.2-rhel61", 12001, 1, 0,
|
||||
QEMU_CAPS_VNC_COLON,
|
||||
QEMU_CAPS_NO_REBOOT,
|
||||
@ -653,7 +654,8 @@ mymain(void)
|
||||
QEMU_CAPS_DEVICE_QXL,
|
||||
QEMU_CAPS_DEVICE_VGA,
|
||||
QEMU_CAPS_DEVICE_CIRRUS_VGA,
|
||||
QEMU_CAPS_DEVICE_PCI_BRIDGE);
|
||||
QEMU_CAPS_DEVICE_PCI_BRIDGE,
|
||||
QEMU_CAPS_DEVICE_USB_STORAGE);
|
||||
DO_TEST("qemu-1.0", 1000000, 0, 0,
|
||||
QEMU_CAPS_VNC_COLON,
|
||||
QEMU_CAPS_NO_REBOOT,
|
||||
@ -736,7 +738,8 @@ mymain(void)
|
||||
QEMU_CAPS_DEVICE_USB_SERIAL,
|
||||
QEMU_CAPS_DEVICE_USB_NET,
|
||||
QEMU_CAPS_DEVICE_SCSI_GENERIC,
|
||||
QEMU_CAPS_DEVICE_SCSI_GENERIC_BOOTINDEX);
|
||||
QEMU_CAPS_DEVICE_SCSI_GENERIC_BOOTINDEX,
|
||||
QEMU_CAPS_DEVICE_USB_STORAGE);
|
||||
DO_TEST("qemu-1.1.0", 1001000, 0, 0,
|
||||
QEMU_CAPS_VNC_COLON,
|
||||
QEMU_CAPS_NO_REBOOT,
|
||||
@ -831,7 +834,8 @@ mymain(void)
|
||||
QEMU_CAPS_DEVICE_PCI_BRIDGE,
|
||||
QEMU_CAPS_DEVICE_SCSI_GENERIC,
|
||||
QEMU_CAPS_DEVICE_SCSI_GENERIC_BOOTINDEX,
|
||||
QEMU_CAPS_VNC_SHARE_POLICY);
|
||||
QEMU_CAPS_VNC_SHARE_POLICY,
|
||||
QEMU_CAPS_DEVICE_USB_STORAGE);
|
||||
DO_TEST("qemu-1.2.0", 1002000, 0, 0,
|
||||
QEMU_CAPS_VNC_COLON,
|
||||
QEMU_CAPS_NO_REBOOT,
|
||||
@ -937,7 +941,8 @@ mymain(void)
|
||||
QEMU_CAPS_DEVICE_PCI_BRIDGE,
|
||||
QEMU_CAPS_DEVICE_SCSI_GENERIC,
|
||||
QEMU_CAPS_DEVICE_SCSI_GENERIC_BOOTINDEX,
|
||||
QEMU_CAPS_VNC_SHARE_POLICY);
|
||||
QEMU_CAPS_VNC_SHARE_POLICY,
|
||||
QEMU_CAPS_DEVICE_USB_STORAGE);
|
||||
DO_TEST("qemu-kvm-1.2.0", 1002000, 1, 0,
|
||||
QEMU_CAPS_VNC_COLON,
|
||||
QEMU_CAPS_NO_REBOOT,
|
||||
@ -1048,7 +1053,8 @@ mymain(void)
|
||||
QEMU_CAPS_DEVICE_PCI_BRIDGE,
|
||||
QEMU_CAPS_DEVICE_SCSI_GENERIC,
|
||||
QEMU_CAPS_DEVICE_SCSI_GENERIC_BOOTINDEX,
|
||||
QEMU_CAPS_VNC_SHARE_POLICY);
|
||||
QEMU_CAPS_VNC_SHARE_POLICY,
|
||||
QEMU_CAPS_DEVICE_USB_STORAGE);
|
||||
|
||||
return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
|
||||
}
|
||||
|
@ -80,6 +80,7 @@ qemuHotplugCreateObjects(virDomainXMLOptionPtr xmlopt,
|
||||
virQEMUCapsSet(priv->qemuCaps, QEMU_CAPS_DEVICE);
|
||||
virQEMUCapsSet(priv->qemuCaps, QEMU_CAPS_NET_NAME);
|
||||
virQEMUCapsSet(priv->qemuCaps, QEMU_CAPS_VIRTIO_SCSI);
|
||||
virQEMUCapsSet(priv->qemuCaps, QEMU_CAPS_DEVICE_USB_STORAGE);
|
||||
if (event)
|
||||
virQEMUCapsSet(priv->qemuCaps, QEMU_CAPS_DEVICE_DEL_EVENT);
|
||||
|
||||
|
@ -544,7 +544,8 @@ mymain(void)
|
||||
QEMU_CAPS_DRIVE, QEMU_CAPS_DEVICE, QEMU_CAPS_BOOTINDEX);
|
||||
DO_TEST("disk-usb", NONE);
|
||||
DO_TEST("disk-usb-device",
|
||||
QEMU_CAPS_DRIVE, QEMU_CAPS_DEVICE, QEMU_CAPS_NODEFCONFIG);
|
||||
QEMU_CAPS_DRIVE, QEMU_CAPS_DEVICE, QEMU_CAPS_DEVICE_USB_STORAGE,
|
||||
QEMU_CAPS_NODEFCONFIG);
|
||||
DO_TEST("disk-scsi-device",
|
||||
QEMU_CAPS_DRIVE, QEMU_CAPS_DEVICE, QEMU_CAPS_NODEFCONFIG,
|
||||
QEMU_CAPS_SCSI_LSI);
|
||||
|
Loading…
x
Reference in New Issue
Block a user