[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 5/6 v11] add-cow: hmp and qmp interface
From: |
Dong Xu Wang |
Subject: |
[Qemu-devel] [PATCH 5/6 v11] add-cow: hmp and qmp interface |
Date: |
Wed, 1 Aug 2012 00:51:49 +0800 |
add HMP and QMP support for add-cow format. Because add-cow does not work
like other image formats, it will use image-file, so we need add add-cow
support while doing snapshot.
Signed-off-by: Dong Xu Wang <address@hidden>
---
hmp-commands.hx | 8 ++++++--
hmp.c | 5 ++++-
qapi-schema.json | 5 +++--
qmp-commands.hx | 2 +-
4 files changed, 14 insertions(+), 6 deletions(-)
diff --git a/hmp-commands.hx b/hmp-commands.hx
index eea8b32..bd14690 100644
--- a/hmp-commands.hx
+++ b/hmp-commands.hx
@@ -908,14 +908,18 @@ ETEXI
{
.name = "snapshot_blkdev",
- .args_type = "reuse:-n,device:B,snapshot-file:s?,format:s?",
- .params = "[-n] device [new-image-file] [format]",
+ .args_type =
"reuse:-n,device:B,snapshot-file:s?,format:s?,image-file:s?,image-format:s?",
+ .params = "[-n] device [new-image-file] [format] [image-file]
[image-format]",
.help = "initiates a live snapshot\n\t\t\t"
"of device. If a new image file is specified,
the\n\t\t\t"
"new image file will become the new root image.\n\t\t\t"
"If format is specified, the snapshot file will\n\t\t\t"
"be created in that format. Otherwise the\n\t\t\t"
"snapshot will be internal! (currently
unsupported).\n\t\t\t"
+ "If image file is specified, the snapshot file
will\n\t\t\t"
+ "be created using image_file option.\n\t\t\t"
+ "If image-format is specified, the image file
will\n\t\t\t"
+ "be created in that format. Otherwise will use raw
format.\n\t\t\t"
"The default format is qcow2. The -n flag requests
QEMU\n\t\t\t"
"to reuse the image found in new-image-file, instead
of\n\t\t\t"
"recreating it from scratch.",
diff --git a/hmp.c b/hmp.c
index 6b72a64..4c7026c 100644
--- a/hmp.c
+++ b/hmp.c
@@ -701,6 +701,8 @@ void hmp_snapshot_blkdev(Monitor *mon, const QDict *qdict)
const char *filename = qdict_get_try_str(qdict, "snapshot-file");
const char *format = qdict_get_try_str(qdict, "format");
int reuse = qdict_get_try_bool(qdict, "reuse", 0);
+ const char *image_filename = qdict_get_try_str(qdict, "image-file");
+ const char *image_format = qdict_get_try_str(qdict, "image-format");
enum NewImageMode mode;
Error *errp = NULL;
@@ -714,7 +716,8 @@ void hmp_snapshot_blkdev(Monitor *mon, const QDict *qdict)
mode = reuse ? NEW_IMAGE_MODE_EXISTING : NEW_IMAGE_MODE_ABSOLUTE_PATHS;
qmp_blockdev_snapshot_sync(device, filename, !!format, format,
- true, mode, &errp);
+ true, mode, !!image_filename, image_filename,
+ !!image_format, image_format, &errp);
hmp_handle_error(mon, &errp);
}
diff --git a/qapi-schema.json b/qapi-schema.json
index bc55ed2..c90fe0d 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -1204,7 +1204,7 @@
##
{ 'type': 'BlockdevSnapshot',
'data': { 'device': 'str', 'snapshot-file': 'str', '*format': 'str',
- '*mode': 'NewImageMode' } }
+ '*mode': 'NewImageMode', '*image_file': 'str', '*image_format':
'str' } }
##
# @BlockdevAction
@@ -1269,7 +1269,8 @@
##
{ 'command': 'blockdev-snapshot-sync',
'data': { 'device': 'str', 'snapshot-file': 'str', '*format': 'str',
- '*mode': 'NewImageMode'} }
+ '*mode': 'NewImageMode', '*image-file': 'str',
+ '*image-format': 'str'} }
##
# @human-monitor-command:
diff --git a/qmp-commands.hx b/qmp-commands.hx
index e3cf3c5..fc776a5 100644
--- a/qmp-commands.hx
+++ b/qmp-commands.hx
@@ -789,7 +789,7 @@ EQMP
{
.name = "blockdev-snapshot-sync",
- .args_type = "device:B,snapshot-file:s,format:s?,mode:s?",
+ .args_type =
"device:B,snapshot-file:s,format:s?,mode:s?,image-file:s?,image-format:s?",
.mhandler.cmd_new = qmp_marshal_input_blockdev_snapshot_sync,
},
--
1.7.1