@@ -1060,6 +1060,25 @@ Take an internal snapshot on device if it support
ETEXI
{
+ .name = "snapshot_delete_internal_blkdev",
+ .args_type = "device:B,name:s",
+ .params = "device name",
+ .help = "delete an internal snapshot of device.\n\t\t\t"
+ "Name is the snapshot's name.\n\t\t\t"
+ "If no snapshot matching name found,\n\t\t\t"
+ "the operation will fail.\n\t\t\t"
+ "The format of the image used by device must\n\t\t\t"
+ "support it, such as qcow2.\n\t\t\t",
+ .mhandler.cmd = hmp_snapshot_delete_internal_blkdev,
+ },
+
+STEXI
+@item snapshot_delete_internal_blkdev
+@findex snapshot_delete_internal_blkdev
+Delete an internal snapshot on device if it support
+ETEXI
+
+ {
.name = "drive_mirror",
.args_type = "reuse:-n,full:-f,device:B,target:s,format:s?",
.params = "[-n] [-f] device target [format]",
@@ -922,6 +922,16 @@ void hmp_snapshot_internal_blkdev(Monitor *mon, const QDict *qdict)
hmp_handle_error(mon, &errp);
}
+void hmp_snapshot_delete_internal_blkdev(Monitor *mon, const QDict *qdict)
+{
+ const char *device = qdict_get_str(qdict, "device");
+ const char *name = qdict_get_try_str(qdict, "name");
+ Error *errp = NULL;
+
+ qmp_blockdev_snapshot_delete_internal_sync(device, name, &errp);
+ hmp_handle_error(mon, &errp);
+}
+
void hmp_migrate_cancel(Monitor *mon, const QDict *qdict)
{
qmp_migrate_cancel(NULL);
@@ -55,6 +55,7 @@ void hmp_balloon(Monitor *mon, const QDict *qdict);
void hmp_block_resize(Monitor *mon, const QDict *qdict);
void hmp_snapshot_blkdev(Monitor *mon, const QDict *qdict);
void hmp_snapshot_internal_blkdev(Monitor *mon, const QDict *qdict);
+void hmp_snapshot_delete_internal_blkdev(Monitor *mon, const QDict *qdict);
void hmp_drive_mirror(Monitor *mon, const QDict *qdict);
void hmp_migrate_cancel(Monitor *mon, const QDict *qdict);
void hmp_migrate_set_downtime(Monitor *mon, const QDict *qdict);
Signed-off-by: Wenchao Xia <xiawenc@linux.vnet.ibm.com> --- hmp-commands.hx | 19 +++++++++++++++++++ hmp.c | 10 ++++++++++ hmp.h | 1 + 3 files changed, 30 insertions(+), 0 deletions(-)