Skip to contentSkip to conversation

Add drive_add/drive_del to qmp_commands.hx

PATCH In review Hu Tao 3 participants 3 messages Feb 17, 2011

lore
Share & tools
lore

Hu Tao

author
#0 lore raw

PATCH 1/1 Add drive_add/drive_del to qmp_commands.hx

This patch enables drive_add/drive_del qmp commands, which are required by libvirt when connecting to qemu using QMP.

---
 qmp-commands.hx |   59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 59 insertions(+), 0 deletions(-)
qmp-commands.hx +59 -0
index df40a3d..cf1cd13 100644
@@ -1774,3 +1774,62 @@ Example:
 
 EQMP
 
+    {
+        .name       = "drive_add",
+        .args_type  = "pci_addr:s,opts:s",
+        .params     = "[[<domain>:]<bus>:]<slot>\n"
+                      "[file=file][,if=type][,bus=n]\n"
+                      "[,unit=m][,media=d][index=i]\n"
+                      "[,cyls=c,heads=h,secs=s[,trans=t]]\n"
+                      "[snapshot=on|off][,cache=on|off]",
+
+        .help       = "add drive to PCI storage controller",
+        .mhandler.cmd = drive_hot_add,
+    },
+
+SQMP
+drive_add
+---------
+
+Add drive to PCI storage controller.
+
+Arguments:
+
+- "pci_addr": pci address.
+- "opts": options of the drive to be added.
+
+Example:
+
+-> { "execute": "drive_add", "arguments": { "pci_addr": "dummy", "opts": "file=/path/to/disk.img, if=none, id=drive-virtio-disk1, format=raw" } }
+<- { "return": {} }
+
+EQMP
+
+    {
+        .name       = "drive_del",
+        .args_type  = "id:s",
+        .params     = "device",
+        .help       = "remove host block device",
+        .user_print = monitor_user_noop,
+        .mhandler.cmd_new = do_drive_del,
+    },
+
+SQMP
+drive_del
+---------
+
+Remove host block device.  The result is that guest generated IO is no longer
+submitted against the host device underlying the disk.  Once a drive has
+been deleted, the QEMU Block layer returns -EIO which results in IO
+errors in the guest for applications that are reading/writing to the device.
+
+Arguments:
+
+- "id": id of device to be removed.
+
+Examples:
+
+-> { "execute": "drive_del", "arguments": { "id": "drive-virtio-disk1"} }
+<- { "return": {} }
+
+EQMP
Signature · 1 line
1.7.3.1
#1 lore raw
Quoted 34 lines · Hu Tao

This patch enables drive_add/drive_del qmp commands, which are required by libvirt when connecting to qemu using QMP.

---
  qmp-commands.hx |   59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1 files changed, 59 insertions(+), 0 deletions(-)
qmp-commands.hx +17 -0
index df40a3d..cf1cd13 100644
@@ -1774,3 +1774,62 @@ Example:
 
  EQMP
 
+    {
+        .name       = "drive_add",
+        .args_type  = "pci_addr:s,opts:s",
+        .params     = "[[<domain>:]<bus>:]<slot>\n"
+                      "[file=file][,if=type][,bus=n]\n"
+                      "[,unit=m][,media=d][index=i]\n"
+                      "[,cyls=c,heads=h,secs=s[,trans=t]]\n"
+                      "[snapshot=on|off][,cache=on|off]",
+
+        .help       = "add drive to PCI storage controller",
+        .mhandler.cmd = drive_hot_add,
+    },
+
+SQMP
+drive_add
+---------
+

qmp-commands.hx Example: · line 1803

Quoted 10 lines
qmp-commands.hx +10 -0
+Add drive to PCI storage controller.
+
+Arguments:
+
+- "pci_addr": pci address.
+- "opts": options of the drive to be added.
+
+Example:
+
+->  { "execute": "drive_add", "arguments": { "pci_addr": "dummy", "opts": "file=/path/to/disk.img, if=none, id=drive-virtio-disk1, format=raw" } }

QMP command should not take encoded arguments.

Regards,

Anthony Liguori

Quoted 33 lines
qmp-commands.hx +32 -0
+<- { "return": {} }
+
+EQMP
+
+    {
+        .name       = "drive_del",
+        .args_type  = "id:s",
+        .params     = "device",
+        .help       = "remove host block device",
+        .user_print = monitor_user_noop,
+        .mhandler.cmd_new = do_drive_del,
+    },
+
+SQMP
+drive_del
+---------
+
+Remove host block device.  The result is that guest generated IO is no longer
+submitted against the host device underlying the disk.  Once a drive has
+been deleted, the QEMU Block layer returns -EIO which results in IO
+errors in the guest for applications that are reading/writing to the device.
+
+Arguments:
+
+- "id": id of device to be removed.
+
+Examples:
+
+->  { "execute": "drive_del", "arguments": { "id": "drive-virtio-disk1"} }
+<- { "return": {} }
+
+EQMP
#2 lore raw
In reply to Hu Tao
Quoted 2 lines · Hu Tao

This patch enables drive_add/drive_del qmp commands, which are required by libvirt when connecting to qemu using QMP.

These commands were intentionally left out of QMP because they are badly designed.

I understand the need for drive hot plug in QMP. I started to work on saner commands some time ago, but too many other things took priority. I still hope to finish the job.

Can you use human monitor passthrough in the meantime?