In QOM, all devices are objects, which makes the existing names technically correct; however, not all objects are devices, and soon we're going to start looking for object properties in addition to device properties: the former need to go through a different code path, so we need to be able to tell them apart. Using more precise names is a good way to achieve that. While renaming, hunks are also being moved around a bit: the new grouping, too, will make things nicer once we start adding support for object properties. Signed-off-by: Andrea Bolognani <abologna@xxxxxxxxxx> --- src/qemu/qemu_capabilities.c | 239 ++++++++++++++++++++++--------------------- src/qemu/qemu_monitor.c | 4 +- src/qemu/qemu_monitor.h | 2 +- src/qemu/qemu_monitor_json.c | 2 +- src/qemu/qemu_monitor_json.h | 2 +- 5 files changed, 128 insertions(+), 121 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index c70bd27f18..83ec8a67d5 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -1559,6 +1559,13 @@ struct virQEMUCapsStringFlags { int flag; }; +struct virQEMUCapsObjectTypeProps { + const char *type; + struct virQEMUCapsStringFlags *props; + size_t nprops; + int capsCondition; +}; + struct virQEMUCapsStringFlags virQEMUCapsCommands[] = { { "system_wakeup", QEMU_CAPS_WAKEUP }, @@ -1698,14 +1705,21 @@ struct virQEMUCapsStringFlags virQEMUCapsObjectTypes[] = { { "pl011", QEMU_CAPS_DEVICE_PL011 }, }; -static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsVirtioBalloon[] = { +/* Device properties. + * + * The following can be probed either using the device-list-properties + * QMP command or, for older QEMU versions, from the help text obtained + * through the '-device xxx,?' command line option + */ + +static struct virQEMUCapsStringFlags virQEMUCapsDevicePropsVirtioBalloon[] = { { "deflate-on-oom", QEMU_CAPS_VIRTIO_BALLOON_AUTODEFLATE }, { "disable-legacy", QEMU_CAPS_VIRTIO_PCI_DISABLE_LEGACY }, { "iommu_platform", QEMU_CAPS_VIRTIO_PCI_IOMMU_PLATFORM }, { "ats", QEMU_CAPS_VIRTIO_PCI_ATS }, }; -static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsVirtioBlk[] = { +static struct virQEMUCapsStringFlags virQEMUCapsDevicePropsVirtioBlk[] = { { "multifunction", QEMU_CAPS_PCI_MULTIFUNCTION }, { "bootindex", QEMU_CAPS_BOOTINDEX }, { "ioeventfd", QEMU_CAPS_VIRTIO_IOEVENTFD }, @@ -1719,7 +1733,7 @@ static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsVirtioBlk[] = { { "ats", QEMU_CAPS_VIRTIO_PCI_ATS }, }; -static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsVirtioNet[] = { +static struct virQEMUCapsStringFlags virQEMUCapsDevicePropsVirtioNet[] = { { "tx", QEMU_CAPS_VIRTIO_TX_ALG }, { "event_idx", QEMU_CAPS_VIRTIO_NET_EVENT_IDX }, { "rx_queue_size", QEMU_CAPS_VIRTIO_NET_RX_QUEUE_SIZE }, @@ -1730,87 +1744,87 @@ static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsVirtioNet[] = { { "ats", QEMU_CAPS_VIRTIO_PCI_ATS }, }; -static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsSpaprPCIHostBridge[] = { +static struct virQEMUCapsStringFlags virQEMUCapsDevicePropsSpaprPCIHostBridge[] = { { "numa_node", QEMU_CAPS_SPAPR_PCI_HOST_BRIDGE_NUMA_NODE }, }; -static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsVirtioSCSI[] = { +static struct virQEMUCapsStringFlags virQEMUCapsDevicePropsVirtioSCSI[] = { { "iothread", QEMU_CAPS_VIRTIO_SCSI_IOTHREAD }, { "disable-legacy", QEMU_CAPS_VIRTIO_PCI_DISABLE_LEGACY }, { "iommu_platform", QEMU_CAPS_VIRTIO_PCI_IOMMU_PLATFORM }, { "ats", QEMU_CAPS_VIRTIO_PCI_ATS }, }; -static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsPCIAssign[] = { +static struct virQEMUCapsStringFlags virQEMUCapsDevicePropsPCIAssign[] = { { "configfd", QEMU_CAPS_PCI_CONFIGFD }, { "bootindex", QEMU_CAPS_PCI_BOOTINDEX }, }; -static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsVfioPCI[] = { +static struct virQEMUCapsStringFlags virQEMUCapsDevicePropsVfioPCI[] = { { "bootindex", QEMU_CAPS_VFIO_PCI_BOOTINDEX }, }; -static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsSCSIDisk[] = { +static struct virQEMUCapsStringFlags virQEMUCapsDevicePropsSCSIDisk[] = { { "channel", QEMU_CAPS_SCSI_DISK_CHANNEL }, { "wwn", QEMU_CAPS_SCSI_DISK_WWN }, { "share-rw", QEMU_CAPS_DISK_SHARE_RW }, }; -static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsIDEDrive[] = { +static struct virQEMUCapsStringFlags virQEMUCapsDevicePropsIDEDrive[] = { { "wwn", QEMU_CAPS_IDE_DRIVE_WWN }, { "share-rw", QEMU_CAPS_DISK_SHARE_RW }, }; -static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsPiix4PM[] = { +static struct virQEMUCapsStringFlags virQEMUCapsDevicePropsPiix4PM[] = { { "disable_s3", QEMU_CAPS_PIIX_DISABLE_S3 }, { "disable_s4", QEMU_CAPS_PIIX_DISABLE_S4 }, }; -static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsUSBRedir[] = { +static struct virQEMUCapsStringFlags virQEMUCapsDevicePropsUSBRedir[] = { { "filter", QEMU_CAPS_USB_REDIR_FILTER }, { "bootindex", QEMU_CAPS_USB_REDIR_BOOTINDEX }, }; -static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsUSBHost[] = { +static struct virQEMUCapsStringFlags virQEMUCapsDevicePropsUSBHost[] = { { "bootindex", QEMU_CAPS_USB_HOST_BOOTINDEX }, }; -static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsSCSIGeneric[] = { +static struct virQEMUCapsStringFlags virQEMUCapsDevicePropsSCSIGeneric[] = { { "bootindex", QEMU_CAPS_DEVICE_SCSI_GENERIC_BOOTINDEX }, }; -static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsI440FXPCIHost[] = { +static struct virQEMUCapsStringFlags virQEMUCapsDevicePropsI440FXPCIHost[] = { { "pci-hole64-size", QEMU_CAPS_I440FX_PCI_HOLE64_SIZE }, }; -static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsQ35PCIHost[] = { +static struct virQEMUCapsStringFlags virQEMUCapsDevicePropsQ35PCIHost[] = { { "pci-hole64-size", QEMU_CAPS_Q35_PCI_HOLE64_SIZE }, }; -static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsUSBStorage[] = { +static struct virQEMUCapsStringFlags virQEMUCapsDevicePropsUSBStorage[] = { { "removable", QEMU_CAPS_USB_STORAGE_REMOVABLE }, { "share-rw", QEMU_CAPS_DISK_SHARE_RW }, }; -static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsKVMPit[] = { +static struct virQEMUCapsStringFlags virQEMUCapsDevicePropsKVMPit[] = { { "lost_tick_policy", QEMU_CAPS_KVM_PIT_TICK_POLICY }, }; -static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsVGA[] = { +static struct virQEMUCapsStringFlags virQEMUCapsDevicePropsVGA[] = { { "vgamem_mb", QEMU_CAPS_VGA_VGAMEM }, }; -static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsVmwareSvga[] = { +static struct virQEMUCapsStringFlags virQEMUCapsDevicePropsVmwareSvga[] = { { "vgamem_mb", QEMU_CAPS_VMWARE_SVGA_VGAMEM }, }; -static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsQxl[] = { +static struct virQEMUCapsStringFlags virQEMUCapsDevicePropsQxl[] = { { "vgamem_mb", QEMU_CAPS_QXL_VGAMEM }, { "vram64_size_mb", QEMU_CAPS_QXL_VRAM64 }, { "max_outputs", QEMU_CAPS_QXL_MAX_OUTPUTS }, }; -static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsVirtioGpu[] = { +static struct virQEMUCapsStringFlags virQEMUCapsDevicePropsVirtioGpu[] = { { "virgl", QEMU_CAPS_VIRTIO_GPU_VIRGL }, { "max_outputs", QEMU_CAPS_VIRTIO_GPU_MAX_OUTPUTS }, { "disable-legacy", QEMU_CAPS_VIRTIO_PCI_DISABLE_LEGACY }, @@ -1818,139 +1832,132 @@ static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsVirtioGpu[] = { { "ats", QEMU_CAPS_VIRTIO_PCI_ATS }, }; -static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsICH9[] = { +static struct virQEMUCapsStringFlags virQEMUCapsDevicePropsICH9[] = { { "disable_s3", QEMU_CAPS_ICH9_DISABLE_S3 }, { "disable_s4", QEMU_CAPS_ICH9_DISABLE_S4 }, }; -static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsUSBNECXHCI[] = { +static struct virQEMUCapsStringFlags virQEMUCapsDevicePropsUSBNECXHCI[] = { { "p3", QEMU_CAPS_NEC_USB_XHCI_PORTS }, }; -static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsIntelIOMMU[] = { +static struct virQEMUCapsStringFlags virQEMUCapsDevicePropsIntelIOMMU[] = { { "intremap", QEMU_CAPS_INTEL_IOMMU_INTREMAP }, { "caching-mode", QEMU_CAPS_INTEL_IOMMU_CACHING_MODE }, { "eim", QEMU_CAPS_INTEL_IOMMU_EIM }, { "device-iotlb", QEMU_CAPS_INTEL_IOMMU_DEVICE_IOTLB }, }; -/* see documentation for virQEMUCapsQMPSchemaGetByPath for the query format */ -static struct virQEMUCapsStringFlags virQEMUCapsQMPSchemaQueries[] = { - { "blockdev-add/arg-type/options/+gluster/debug-level", QEMU_CAPS_GLUSTER_DEBUG_LEVEL}, - { "blockdev-add/arg-type/+gluster/debug", QEMU_CAPS_GLUSTER_DEBUG_LEVEL}, - { "blockdev-add/arg-type/+vxhs", QEMU_CAPS_VXHS}, - { "blockdev-add/arg-type/+iscsi/password-secret", QEMU_CAPS_ISCSI_PASSWORD_SECRET }, -}; - -struct virQEMUCapsObjectTypeProps { - const char *type; - struct virQEMUCapsStringFlags *props; - size_t nprops; - int capsCondition; -}; - -static struct virQEMUCapsObjectTypeProps virQEMUCapsObjectProps[] = { - { "virtio-blk-pci", virQEMUCapsObjectPropsVirtioBlk, - ARRAY_CARDINALITY(virQEMUCapsObjectPropsVirtioBlk), +static struct virQEMUCapsObjectTypeProps virQEMUCapsDeviceProps[] = { + { "virtio-blk-pci", virQEMUCapsDevicePropsVirtioBlk, + ARRAY_CARDINALITY(virQEMUCapsDevicePropsVirtioBlk), -1 }, - { "virtio-net-pci", virQEMUCapsObjectPropsVirtioNet, - ARRAY_CARDINALITY(virQEMUCapsObjectPropsVirtioNet), + { "virtio-net-pci", virQEMUCapsDevicePropsVirtioNet, + ARRAY_CARDINALITY(virQEMUCapsDevicePropsVirtioNet), QEMU_CAPS_DEVICE_VIRTIO_NET }, - { "virtio-scsi-pci", virQEMUCapsObjectPropsVirtioSCSI, - ARRAY_CARDINALITY(virQEMUCapsObjectPropsVirtioSCSI), + { "virtio-scsi-pci", virQEMUCapsDevicePropsVirtioSCSI, + ARRAY_CARDINALITY(virQEMUCapsDevicePropsVirtioSCSI), QEMU_CAPS_VIRTIO_SCSI }, - { "virtio-blk-ccw", virQEMUCapsObjectPropsVirtioBlk, - ARRAY_CARDINALITY(virQEMUCapsObjectPropsVirtioBlk), + { "virtio-blk-ccw", virQEMUCapsDevicePropsVirtioBlk, + ARRAY_CARDINALITY(virQEMUCapsDevicePropsVirtioBlk), QEMU_CAPS_VIRTIO_CCW }, - { "virtio-net-ccw", virQEMUCapsObjectPropsVirtioNet, - ARRAY_CARDINALITY(virQEMUCapsObjectPropsVirtioNet), + { "virtio-net-ccw", virQEMUCapsDevicePropsVirtioNet, + ARRAY_CARDINALITY(virQEMUCapsDevicePropsVirtioNet), QEMU_CAPS_DEVICE_VIRTIO_NET }, - { "virtio-scsi-ccw", virQEMUCapsObjectPropsVirtioSCSI, - ARRAY_CARDINALITY(virQEMUCapsObjectPropsVirtioSCSI), + { "virtio-scsi-ccw", virQEMUCapsDevicePropsVirtioSCSI, + ARRAY_CARDINALITY(virQEMUCapsDevicePropsVirtioSCSI), QEMU_CAPS_VIRTIO_SCSI }, - { "virtio-blk-s390", virQEMUCapsObjectPropsVirtioBlk, - ARRAY_CARDINALITY(virQEMUCapsObjectPropsVirtioBlk), + { "virtio-blk-s390", virQEMUCapsDevicePropsVirtioBlk, + ARRAY_CARDINALITY(virQEMUCapsDevicePropsVirtioBlk), QEMU_CAPS_VIRTIO_S390 }, - { "virtio-net-s390", virQEMUCapsObjectPropsVirtioNet, - ARRAY_CARDINALITY(virQEMUCapsObjectPropsVirtioNet), + { "virtio-net-s390", virQEMUCapsDevicePropsVirtioNet, + ARRAY_CARDINALITY(virQEMUCapsDevicePropsVirtioNet), QEMU_CAPS_DEVICE_VIRTIO_NET }, - { "pci-assign", virQEMUCapsObjectPropsPCIAssign, - ARRAY_CARDINALITY(virQEMUCapsObjectPropsPCIAssign), + { "pci-assign", virQEMUCapsDevicePropsPCIAssign, + ARRAY_CARDINALITY(virQEMUCapsDevicePropsPCIAssign), -1 }, - { "kvm-pci-assign", virQEMUCapsObjectPropsPCIAssign, - ARRAY_CARDINALITY(virQEMUCapsObjectPropsPCIAssign), + { "kvm-pci-assign", virQEMUCapsDevicePropsPCIAssign, + ARRAY_CARDINALITY(virQEMUCapsDevicePropsPCIAssign), -1 }, - { "vfio-pci", virQEMUCapsObjectPropsVfioPCI, - ARRAY_CARDINALITY(virQEMUCapsObjectPropsVfioPCI), + { "vfio-pci", virQEMUCapsDevicePropsVfioPCI, + ARRAY_CARDINALITY(virQEMUCapsDevicePropsVfioPCI), QEMU_CAPS_DEVICE_VFIO_PCI }, - { "scsi-disk", virQEMUCapsObjectPropsSCSIDisk, - ARRAY_CARDINALITY(virQEMUCapsObjectPropsSCSIDisk), + { "scsi-disk", virQEMUCapsDevicePropsSCSIDisk, + ARRAY_CARDINALITY(virQEMUCapsDevicePropsSCSIDisk), -1 }, - { "ide-drive", virQEMUCapsObjectPropsIDEDrive, - ARRAY_CARDINALITY(virQEMUCapsObjectPropsIDEDrive), + { "ide-drive", virQEMUCapsDevicePropsIDEDrive, + ARRAY_CARDINALITY(virQEMUCapsDevicePropsIDEDrive), -1 }, - { "PIIX4_PM", virQEMUCapsObjectPropsPiix4PM, - ARRAY_CARDINALITY(virQEMUCapsObjectPropsPiix4PM), + { "PIIX4_PM", virQEMUCapsDevicePropsPiix4PM, + ARRAY_CARDINALITY(virQEMUCapsDevicePropsPiix4PM), -1 }, - { "usb-redir", virQEMUCapsObjectPropsUSBRedir, - ARRAY_CARDINALITY(virQEMUCapsObjectPropsUSBRedir), + { "usb-redir", virQEMUCapsDevicePropsUSBRedir, + ARRAY_CARDINALITY(virQEMUCapsDevicePropsUSBRedir), QEMU_CAPS_USB_REDIR }, - { "usb-host", virQEMUCapsObjectPropsUSBHost, - ARRAY_CARDINALITY(virQEMUCapsObjectPropsUSBHost), + { "usb-host", virQEMUCapsDevicePropsUSBHost, + ARRAY_CARDINALITY(virQEMUCapsDevicePropsUSBHost), -1 }, - { "scsi-generic", virQEMUCapsObjectPropsSCSIGeneric, - ARRAY_CARDINALITY(virQEMUCapsObjectPropsSCSIGeneric), + { "scsi-generic", virQEMUCapsDevicePropsSCSIGeneric, + ARRAY_CARDINALITY(virQEMUCapsDevicePropsSCSIGeneric), QEMU_CAPS_DEVICE_SCSI_GENERIC }, - { "i440FX-pcihost", virQEMUCapsObjectPropsI440FXPCIHost, - ARRAY_CARDINALITY(virQEMUCapsObjectPropsI440FXPCIHost), + { "i440FX-pcihost", virQEMUCapsDevicePropsI440FXPCIHost, + ARRAY_CARDINALITY(virQEMUCapsDevicePropsI440FXPCIHost), -1 }, - { "q35-pcihost", virQEMUCapsObjectPropsQ35PCIHost, - ARRAY_CARDINALITY(virQEMUCapsObjectPropsQ35PCIHost), + { "q35-pcihost", virQEMUCapsDevicePropsQ35PCIHost, + ARRAY_CARDINALITY(virQEMUCapsDevicePropsQ35PCIHost), -1 }, - { "usb-storage", virQEMUCapsObjectPropsUSBStorage, - ARRAY_CARDINALITY(virQEMUCapsObjectPropsUSBStorage), + { "usb-storage", virQEMUCapsDevicePropsUSBStorage, + ARRAY_CARDINALITY(virQEMUCapsDevicePropsUSBStorage), QEMU_CAPS_DEVICE_USB_STORAGE }, - { "kvm-pit", virQEMUCapsObjectPropsKVMPit, - ARRAY_CARDINALITY(virQEMUCapsObjectPropsKVMPit), + { "kvm-pit", virQEMUCapsDevicePropsKVMPit, + ARRAY_CARDINALITY(virQEMUCapsDevicePropsKVMPit), -1 }, - { "VGA", virQEMUCapsObjectPropsVGA, - ARRAY_CARDINALITY(virQEMUCapsObjectPropsVGA), + { "VGA", virQEMUCapsDevicePropsVGA, + ARRAY_CARDINALITY(virQEMUCapsDevicePropsVGA), QEMU_CAPS_DEVICE_VGA }, - { "vmware-svga", virQEMUCapsObjectPropsVmwareSvga, - ARRAY_CARDINALITY(virQEMUCapsObjectPropsVmwareSvga), + { "vmware-svga", virQEMUCapsDevicePropsVmwareSvga, + ARRAY_CARDINALITY(virQEMUCapsDevicePropsVmwareSvga), QEMU_CAPS_DEVICE_VMWARE_SVGA }, - { "qxl", virQEMUCapsObjectPropsQxl, - ARRAY_CARDINALITY(virQEMUCapsObjectPropsQxl), + { "qxl", virQEMUCapsDevicePropsQxl, + ARRAY_CARDINALITY(virQEMUCapsDevicePropsQxl), QEMU_CAPS_DEVICE_QXL }, - { "virtio-gpu-pci", virQEMUCapsObjectPropsVirtioGpu, - ARRAY_CARDINALITY(virQEMUCapsObjectPropsVirtioGpu), + { "virtio-gpu-pci", virQEMUCapsDevicePropsVirtioGpu, + ARRAY_CARDINALITY(virQEMUCapsDevicePropsVirtioGpu), QEMU_CAPS_DEVICE_VIRTIO_GPU }, - { "virtio-gpu-device", virQEMUCapsObjectPropsVirtioGpu, - ARRAY_CARDINALITY(virQEMUCapsObjectPropsVirtioGpu), + { "virtio-gpu-device", virQEMUCapsDevicePropsVirtioGpu, + ARRAY_CARDINALITY(virQEMUCapsDevicePropsVirtioGpu), QEMU_CAPS_DEVICE_VIRTIO_GPU }, - { "ICH9-LPC", virQEMUCapsObjectPropsICH9, - ARRAY_CARDINALITY(virQEMUCapsObjectPropsICH9), + { "ICH9-LPC", virQEMUCapsDevicePropsICH9, + ARRAY_CARDINALITY(virQEMUCapsDevicePropsICH9), -1 }, - { "virtio-balloon-pci", virQEMUCapsObjectPropsVirtioBalloon, - ARRAY_CARDINALITY(virQEMUCapsObjectPropsVirtioBalloon), + { "virtio-balloon-pci", virQEMUCapsDevicePropsVirtioBalloon, + ARRAY_CARDINALITY(virQEMUCapsDevicePropsVirtioBalloon), -1 }, - { "virtio-balloon-ccw", virQEMUCapsObjectPropsVirtioBalloon, - ARRAY_CARDINALITY(virQEMUCapsObjectPropsVirtioBalloon), + { "virtio-balloon-ccw", virQEMUCapsDevicePropsVirtioBalloon, + ARRAY_CARDINALITY(virQEMUCapsDevicePropsVirtioBalloon), -1 }, - { "virtio-balloon-device", virQEMUCapsObjectPropsVirtioBalloon, - ARRAY_CARDINALITY(virQEMUCapsObjectPropsVirtioBalloon), + { "virtio-balloon-device", virQEMUCapsDevicePropsVirtioBalloon, + ARRAY_CARDINALITY(virQEMUCapsDevicePropsVirtioBalloon), -1 }, - { "nec-usb-xhci", virQEMUCapsObjectPropsUSBNECXHCI, - ARRAY_CARDINALITY(virQEMUCapsObjectPropsUSBNECXHCI), + { "nec-usb-xhci", virQEMUCapsDevicePropsUSBNECXHCI, + ARRAY_CARDINALITY(virQEMUCapsDevicePropsUSBNECXHCI), QEMU_CAPS_NEC_USB_XHCI }, - { "intel-iommu", virQEMUCapsObjectPropsIntelIOMMU, - ARRAY_CARDINALITY(virQEMUCapsObjectPropsIntelIOMMU), + { "intel-iommu", virQEMUCapsDevicePropsIntelIOMMU, + ARRAY_CARDINALITY(virQEMUCapsDevicePropsIntelIOMMU), QEMU_CAPS_DEVICE_INTEL_IOMMU }, - { "spapr-pci-host-bridge", virQEMUCapsObjectPropsSpaprPCIHostBridge, - ARRAY_CARDINALITY(virQEMUCapsObjectPropsSpaprPCIHostBridge), + { "spapr-pci-host-bridge", virQEMUCapsDevicePropsSpaprPCIHostBridge, + ARRAY_CARDINALITY(virQEMUCapsDevicePropsSpaprPCIHostBridge), QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE }, }; +/* see documentation for virQEMUCapsQMPSchemaGetByPath for the query format */ +static struct virQEMUCapsStringFlags virQEMUCapsQMPSchemaQueries[] = { + { "blockdev-add/arg-type/options/+gluster/debug-level", QEMU_CAPS_GLUSTER_DEBUG_LEVEL}, + { "blockdev-add/arg-type/+gluster/debug", QEMU_CAPS_GLUSTER_DEBUG_LEVEL}, + { "blockdev-add/arg-type/+vxhs", QEMU_CAPS_VXHS}, + { "blockdev-add/arg-type/+iscsi/password-secret", QEMU_CAPS_ISCSI_PASSWORD_SECRET }, +}; + static void virQEMUCapsProcessStringFlags(virQEMUCapsPtr qemuCaps, @@ -2081,15 +2088,15 @@ virQEMUCapsParseDeviceStr(virQEMUCapsPtr qemuCaps, const char *str) nvalues, values); virStringListFreeCount(values, nvalues); - for (i = 0; i < ARRAY_CARDINALITY(virQEMUCapsObjectProps); i++) { - const char *type = virQEMUCapsObjectProps[i].type; + for (i = 0; i < ARRAY_CARDINALITY(virQEMUCapsDeviceProps); i++) { + const char *type = virQEMUCapsDeviceProps[i].type; if ((nvalues = virQEMUCapsParseDeviceStrObjectProps(str, type, &values)) < 0) return -1; virQEMUCapsProcessStringFlags(qemuCaps, - virQEMUCapsObjectProps[i].nprops, - virQEMUCapsObjectProps[i].props, + virQEMUCapsDeviceProps[i].nprops, + virQEMUCapsDeviceProps[i].props, nvalues, values); virStringListFreeCount(values, nvalues); } @@ -2851,20 +2858,20 @@ virQEMUCapsProbeQMPObjects(virQEMUCapsPtr qemuCaps, nvalues, values); virStringListFreeCount(values, nvalues); - for (i = 0; i < ARRAY_CARDINALITY(virQEMUCapsObjectProps); i++) { - const char *type = virQEMUCapsObjectProps[i].type; - int cap = virQEMUCapsObjectProps[i].capsCondition; + for (i = 0; i < ARRAY_CARDINALITY(virQEMUCapsDeviceProps); i++) { + const char *type = virQEMUCapsDeviceProps[i].type; + int cap = virQEMUCapsDeviceProps[i].capsCondition; if (cap >= 0 && !virQEMUCapsGet(qemuCaps, cap)) continue; - if ((nvalues = qemuMonitorGetObjectProps(mon, + if ((nvalues = qemuMonitorGetDeviceProps(mon, type, &values)) < 0) return -1; virQEMUCapsProcessStringFlags(qemuCaps, - virQEMUCapsObjectProps[i].nprops, - virQEMUCapsObjectProps[i].props, + virQEMUCapsDeviceProps[i].nprops, + virQEMUCapsDeviceProps[i].props, nvalues, values); virStringListFreeCount(values, nvalues); } diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c index 1d67a97789..8ec759fe3f 100644 --- a/src/qemu/qemu_monitor.c +++ b/src/qemu/qemu_monitor.c @@ -3942,7 +3942,7 @@ qemuMonitorGetObjectTypes(qemuMonitorPtr mon, int -qemuMonitorGetObjectProps(qemuMonitorPtr mon, +qemuMonitorGetDeviceProps(qemuMonitorPtr mon, const char *type, char ***props) { @@ -3950,7 +3950,7 @@ qemuMonitorGetObjectProps(qemuMonitorPtr mon, QEMU_CHECK_MONITOR_JSON(mon); - return qemuMonitorJSONGetObjectProps(mon, type, props); + return qemuMonitorJSONGetDeviceProps(mon, type, props); } diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h index adfa87aba9..26074ef7dd 100644 --- a/src/qemu/qemu_monitor.h +++ b/src/qemu/qemu_monitor.h @@ -1094,7 +1094,7 @@ int qemuMonitorGetKVMState(qemuMonitorPtr mon, int qemuMonitorGetObjectTypes(qemuMonitorPtr mon, char ***types); -int qemuMonitorGetObjectProps(qemuMonitorPtr mon, +int qemuMonitorGetDeviceProps(qemuMonitorPtr mon, const char *type, char ***props); char *qemuMonitorGetTargetArch(qemuMonitorPtr mon); diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index 08dfffdf64..eb32811cd1 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -6058,7 +6058,7 @@ int qemuMonitorJSONSetObjectProperty(qemuMonitorPtr mon, #undef MAKE_SET_CMD -int qemuMonitorJSONGetObjectProps(qemuMonitorPtr mon, +int qemuMonitorJSONGetDeviceProps(qemuMonitorPtr mon, const char *type, char ***props) { diff --git a/src/qemu/qemu_monitor_json.h b/src/qemu/qemu_monitor_json.h index ec243becc4..4a1da725d1 100644 --- a/src/qemu/qemu_monitor_json.h +++ b/src/qemu/qemu_monitor_json.h @@ -441,7 +441,7 @@ int qemuMonitorJSONSetObjectProperty(qemuMonitorPtr mon, qemuMonitorJSONObjectPropertyPtr prop) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3) ATTRIBUTE_NONNULL(4); -int qemuMonitorJSONGetObjectProps(qemuMonitorPtr mon, +int qemuMonitorJSONGetDeviceProps(qemuMonitorPtr mon, const char *type, char ***props) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3); -- 2.14.3 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list