The QEMU developers have stated that they will not be porting
the commands 'pci_add', 'pci_del', 'usb_add', 'usb_del' to
the
JSON mode monitor, since they're obsoleted by 'device_add'
and 'device_del'. libvirt has (untested) code that would have
supported those commands in theory, but since we already use
device_add/del where available, there's no need to keep the
legacy stuff anymore.
The text mode monitor keeps support for all commands for sake
of historical compatability.
* src/qemu/qemu_monitor_json.c: Remove 'pci_add', 'pci_del',
'usb_add', 'usb_del' commands
---
src/qemu/qemu_monitor_json.c | 324 ++++++------------------------------------
1 files changed, 47 insertions(+), 277 deletions(-)
diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c
index 2904201..ec04d79 100644
--- a/src/qemu/qemu_monitor_json.c
+++ b/src/qemu/qemu_monitor_json.c
@@ -1476,272 +1476,72 @@ int qemuMonitorJSONMigrateCancel(qemuMonitorPtr mon)
}
-static int qemuMonitorJSONAddUSB(qemuMonitorPtr mon,
- const char *dev)
+int qemuMonitorJSONAddUSBDisk(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
+ const char *path ATTRIBUTE_UNUSED)
{
- int ret;
- virJSONValuePtr cmd = qemuMonitorJSONMakeCommand("usb_add",
- "s:devname", dev,
- NULL);
- virJSONValuePtr reply = NULL;
-
- if (!cmd)
- return -1;
-
- ret = qemuMonitorJSONCommand(mon, cmd, &reply);
-
- if (ret == 0)
- ret = qemuMonitorJSONCheckError(cmd, reply);
-
- virJSONValueFree(cmd);
- virJSONValueFree(reply);
- return ret;
-}
-
-
-int qemuMonitorJSONAddUSBDisk(qemuMonitorPtr mon,
- const char *path)
-{
- int ret;
- char *disk;
-
- if (virAsprintf(&disk, "disk:%s", path) < 0) {
- virReportOOMError();
- return -1;
- }
-
- ret = qemuMonitorJSONAddUSB(mon, disk);
-
- VIR_FREE(disk);
-
- return ret;
-}
-
-
-int qemuMonitorJSONAddUSBDeviceExact(qemuMonitorPtr mon,
- int bus,
- int dev)
-{
- int ret;
- char *addr;
-
- if (virAsprintf(&addr, "host:%.3d.%.3d", bus, dev) < 0) {
- virReportOOMError();
- return -1;
- }
-
- ret = qemuMonitorJSONAddUSB(mon, addr);
-
- VIR_FREE(addr);
- return ret;
+ qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+ _("usb_add not suppported in JSON mode"));
+ return -1;
}
-int qemuMonitorJSONAddUSBDeviceMatch(qemuMonitorPtr mon,
- int vendor,
- int product)
+int qemuMonitorJSONAddUSBDeviceExact(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
+ int bus ATTRIBUTE_UNUSED,
+ int dev ATTRIBUTE_UNUSED)
{
- int ret;
- char *addr;
-
- if (virAsprintf(&addr, "host:%.4x:%.4x", vendor, product) < 0) {
- virReportOOMError();
- return -1;
- }
-
- ret = qemuMonitorJSONAddUSB(mon, addr);
-
- VIR_FREE(addr);
- return ret;
+ qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+ _("usb_add not suppported in JSON mode"));
+ return -1;
}
-static int
-qemuMonitorJSONGetGuestPCIAddress(virJSONValuePtr reply,
- virDomainDevicePCIAddress *guestAddr)
+int qemuMonitorJSONAddUSBDeviceMatch(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
+ int vendor ATTRIBUTE_UNUSED,
+ int product ATTRIBUTE_UNUSED)
{
- virJSONValuePtr addr;
-
- addr = virJSONValueObjectGet(reply, "return");
- if (!addr || addr->type != VIR_JSON_TYPE_OBJECT) {
- qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s",
- _("pci_add reply was missing device address"));
- return -1;
- }
-
- if (virJSONValueObjectGetNumberUint(addr, "domain",
&guestAddr->domain) < 0) {
- qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s",
- _("pci_add reply was missing device domain number"));
- return -1;
- }
-
- if (virJSONValueObjectGetNumberUint(addr, "bus", &guestAddr->bus)
< 0) {
- qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s",
- _("pci_add reply was missing device bus number"));
- return -1;
- }
-
- if (virJSONValueObjectGetNumberUint(addr, "slot", &guestAddr->slot)
< 0) {
- qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s",
- _("pci_add reply was missing device slot number"));
- return -1;
- }
-
- if (virJSONValueObjectGetNumberUint(addr, "function",
&guestAddr->function) < 0) {
- qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s",
- _("pci_add reply was missing device function
number"));
- return -1;
- }
-
- return 0;
+ qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+ _("usb_add not suppported in JSON mode"));
+ return -1;
}
-int qemuMonitorJSONAddPCIHostDevice(qemuMonitorPtr mon,
- virDomainDevicePCIAddress *hostAddr,
- virDomainDevicePCIAddress *guestAddr)
+int qemuMonitorJSONAddPCIHostDevice(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
+ virDomainDevicePCIAddress *hostAddr
ATTRIBUTE_UNUSED,
+ virDomainDevicePCIAddress *guestAddr
ATTRIBUTE_UNUSED)
{
- int ret;
- virJSONValuePtr cmd;
- virJSONValuePtr reply = NULL;
- char *dev;
-
- memset(guestAddr, 0, sizeof(*guestAddr));
-
- /* XXX hostDomain */
- if (virAsprintf(&dev, "host=%.2x:%.2x.%.1x",
- hostAddr->bus, hostAddr->slot, hostAddr->function) < 0)
{
- virReportOOMError();
- return -1;
- }
-
- cmd = qemuMonitorJSONMakeCommand("pci_add",
- "s:pci_addr", "auto"
- "s:type", "host",
- "s:opts", dev,
- NULL);
- VIR_FREE(dev);
- if (!cmd)
- return -1;
-
- ret = qemuMonitorJSONCommand(mon, cmd, &reply);
-
- if (ret == 0)
- ret = qemuMonitorJSONCheckError(cmd, reply);
-
- if (ret == 0 &&
- qemuMonitorJSONGetGuestPCIAddress(reply, guestAddr) < 0)
- ret = -1;
-
- virJSONValueFree(cmd);
- virJSONValueFree(reply);
- return ret;
+ qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+ _("pci_add not suppported in JSON mode"));
+ return -1;
}
-int qemuMonitorJSONAddPCIDisk(qemuMonitorPtr mon,
- const char *path,
- const char *bus,
- virDomainDevicePCIAddress *guestAddr)
+int qemuMonitorJSONAddPCIDisk(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
+ const char *path ATTRIBUTE_UNUSED,
+ const char *bus ATTRIBUTE_UNUSED,
+ virDomainDevicePCIAddress *guestAddr ATTRIBUTE_UNUSED)
{
- int ret;
- virJSONValuePtr cmd;
- virJSONValuePtr reply = NULL;
- char *dev;
-
- memset(guestAddr, 0, sizeof(*guestAddr));
-
- if (virAsprintf(&dev, "file=%s,if=%s", path, bus) < 0) {
- virReportOOMError();
- return -1;
- }
-
- cmd = qemuMonitorJSONMakeCommand("pci_add",
- "s:pci_addr", "auto",
- "s:type", "storage",
- "s:opts", dev,
- NULL);
- VIR_FREE(dev);
- if (!cmd)
- return -1;
-
- ret = qemuMonitorJSONCommand(mon, cmd, &reply);
-
- if (ret == 0)
- ret = qemuMonitorJSONCheckError(cmd, reply);
-
- if (ret == 0 &&
- qemuMonitorJSONGetGuestPCIAddress(reply, guestAddr) < 0)
- ret = -1;
-
- virJSONValueFree(cmd);
- virJSONValueFree(reply);
- return ret;
+ qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+ _("pci_add not suppported in JSON mode"));
+ return -1;
}
-int qemuMonitorJSONAddPCINetwork(qemuMonitorPtr mon,
- const char *nicstr,
- virDomainDevicePCIAddress *guestAddr)
+int qemuMonitorJSONAddPCINetwork(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
+ const char *nicstr ATTRIBUTE_UNUSED,
+ virDomainDevicePCIAddress *guestAddr ATTRIBUTE_UNUSED)
{
- int ret;
- virJSONValuePtr cmd = qemuMonitorJSONMakeCommand("pci_add",
- "s:pci_addr",
"auto",
- "s:type",
"nic",
- "s:opts", nicstr,
- NULL);
- virJSONValuePtr reply = NULL;
-
- memset(guestAddr, 0, sizeof(*guestAddr));
-
- if (!cmd)
- return -1;
-
- ret = qemuMonitorJSONCommand(mon, cmd, &reply);
-
- if (ret == 0)
- ret = qemuMonitorJSONCheckError(cmd, reply);
-
- if (ret == 0 &&
- qemuMonitorJSONGetGuestPCIAddress(reply, guestAddr) < 0)
- ret = -1;
-
- virJSONValueFree(cmd);
- virJSONValueFree(reply);
- return ret;
+ qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+ _("pci_add not suppported in JSON mode"));
+ return -1;
}
-int qemuMonitorJSONRemovePCIDevice(qemuMonitorPtr mon,
- virDomainDevicePCIAddress *guestAddr)
+int qemuMonitorJSONRemovePCIDevice(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
+ virDomainDevicePCIAddress *guestAddr
ATTRIBUTE_UNUSED)
{
- int ret;
- virJSONValuePtr cmd;
- virJSONValuePtr reply = NULL;
- char *addr;
-
- /* XXX what about function ? */
- if (virAsprintf(&addr, "%.4x:%.2x:%.2x",
- guestAddr->domain, guestAddr->bus, guestAddr->slot) < 0)
{
- virReportOOMError();
- return -1;
- }
-
- cmd = qemuMonitorJSONMakeCommand("pci_del",
- "s:pci_addr", addr,
- NULL);
- VIR_FREE(addr);
- if (!cmd)
- return -1;
-
- ret = qemuMonitorJSONCommand(mon, cmd, &reply);
-
- if (ret == 0)
- ret = qemuMonitorJSONCheckError(cmd, reply);
-
- virJSONValueFree(cmd);
- virJSONValueFree(reply);
- return ret;
+ qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+ _("pci_del not suppported in JSON mode"));
+ return -1;
}
@@ -1935,43 +1735,13 @@ int qemuMonitorJSONGetPtyPaths(qemuMonitorPtr mon,
}
-int qemuMonitorJSONAttachPCIDiskController(qemuMonitorPtr mon,
- const char *bus,
- virDomainDevicePCIAddress *guestAddr)
+int qemuMonitorJSONAttachPCIDiskController(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
+ const char *bus ATTRIBUTE_UNUSED,
+ virDomainDevicePCIAddress *guestAddr
ATTRIBUTE_UNUSED)
{
- int ret;
- virJSONValuePtr cmd;
- virJSONValuePtr reply = NULL;
- char *dev;
-
- memset(guestAddr, 0, sizeof(*guestAddr));
-
- if (virAsprintf(&dev, "if=%s", bus) < 0) {
- virReportOOMError();
- return -1;
- }
-
- cmd = qemuMonitorJSONMakeCommand("pci_add",
- "s:pci_addr", "auto",
- "s:type", "storage",
- "s:opts", dev,
- NULL);
- VIR_FREE(dev);
- if (!cmd)
- return -1;
-
- ret = qemuMonitorJSONCommand(mon, cmd, &reply);
-
- if (ret == 0)
- ret = qemuMonitorJSONCheckError(cmd, reply);
-
- if (ret == 0 &&
- qemuMonitorJSONGetGuestPCIAddress(reply, guestAddr) < 0)
- ret = -1;
-
- virJSONValueFree(cmd);
- virJSONValueFree(reply);
- return ret;
+ qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+ _("pci_add not suppported in JSON mode"));
+ return -1;
}
--
1.6.6.1