qmp: add interface blockdev-snapshot-internal-sync

Snapshot ID can't be specified in this interface.

Signed-off-by: Wenchao Xia <xiawenc@linux.vnet.ibm.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
Wenchao Xia 2013-09-11 14:04:35 +08:00 committed by Kevin Wolf
parent bbe860104f
commit f323bc9e8b
3 changed files with 62 additions and 0 deletions

View file

@ -858,6 +858,19 @@ void qmp_blockdev_snapshot_sync(const char *device, const char *snapshot_file,
&snapshot, errp);
}
void qmp_blockdev_snapshot_internal_sync(const char *device,
const char *name,
Error **errp)
{
BlockdevSnapshotInternal snapshot = {
.device = (char *) device,
.name = (char *) name
};
blockdev_do_action(TRANSACTION_ACTION_KIND_BLOCKDEV_SNAPSHOT_INTERNAL_SYNC,
&snapshot, errp);
}
/* New and old BlockDriverState structs for group snapshots */

View file

@ -1804,6 +1804,26 @@
{ 'command': 'blockdev-snapshot-sync',
'data': 'BlockdevSnapshot' }
##
# @blockdev-snapshot-internal-sync
#
# Synchronously take an internal snapshot of a block device, when the format
# of the image used supports it.
#
# For the arguments, see the documentation of BlockdevSnapshotInternal.
#
# Returns: nothing on success
# If @device is not a valid block device, DeviceNotFound
# If any snapshot matching @name exists, or @name is empty,
# GenericError
# If the format of the image used does not support it,
# BlockFormatFeatureNotSupported
#
# Since 1.7
##
{ 'command': 'blockdev-snapshot-internal-sync',
'data': 'BlockdevSnapshotInternal' }
##
# @human-monitor-command:
#

View file

@ -1095,6 +1095,35 @@ Example:
"format": "qcow2" } }
<- { "return": {} }
EQMP
{
.name = "blockdev-snapshot-internal-sync",
.args_type = "device:B,name:s",
.mhandler.cmd_new = qmp_marshal_input_blockdev_snapshot_internal_sync,
},
SQMP
blockdev-snapshot-internal-sync
-------------------------------
Synchronously take an internal snapshot of a block device when the format of
image used supports it. If the name is an empty string, or a snapshot with
name already exists, the operation will fail.
Arguments:
- "device": device name to snapshot (json-string)
- "name": name of the new snapshot (json-string)
Example:
-> { "execute": "blockdev-snapshot-internal-sync",
"arguments": { "device": "ide-hd0",
"name": "snapshot0" }
}
<- { "return": {} }
EQMP
{