Signed-off-by: Federico Simoncelli <fsimo...@redhat.com> --- blockdev.c | 8 ++++++++ qapi-schema.json | 12 ++++++++++++ qmp-commands.hx | 6 +++++- 3 files changed, 25 insertions(+), 1 deletions(-)
diff --git a/blockdev.c b/blockdev.c index 56da5c9..36fe07c 100644 --- a/blockdev.c +++ b/blockdev.c @@ -798,6 +798,14 @@ void qmp_blockdev_transaction(BlockdevActionList *dev_list, dev_info->mirror->target); break; + case BLOCKDEV_ACTION_KIND_REOPEN: + device = dev_info->reopen->device; + if (dev_info->format->has_format) { + format = dev_info->reopen->format; + } + new_source = g_strdup(dev_info->reopen->target); + break; + default: abort(); } diff --git a/qapi-schema.json b/qapi-schema.json index b33875d..17f7548 100644 --- a/qapi-schema.json +++ b/qapi-schema.json @@ -1145,6 +1145,17 @@ { 'type': 'BlockdevMirror', 'data': { 'device': 'str', 'target': 'str', '*format': 'str', '*reuse': 'bool' } } +## +# @BlockdevReopen +# +# @device: the name of the device to reopen. +# +# @target: the target of the new image. +# +# @format: #optional the format of the new image, default is 'qcow2'. +## +{ 'type': 'BlockdevReopen', + 'data': { 'device': 'str', 'target': 'str', '*format': 'str' } } ## # @BlockdevAction @@ -1156,6 +1167,7 @@ 'data': { 'snapshot': 'BlockdevSnapshot', 'mirror': 'BlockdevMirror', + 'reopen': 'BlockdevReopen', } } ## diff --git a/qmp-commands.hx b/qmp-commands.hx index 50ac5a0..317c448 100644 --- a/qmp-commands.hx +++ b/qmp-commands.hx @@ -720,7 +720,7 @@ Arguments: actions array: - "type": the operation to perform. The only supported - values are "snapshot" and "mirror". (json-string) + values are "snapshot", "mirror" and "reopen". (json-string) - "data": a dictionary. The contents depend on the value of "type". When "type" is "snapshot": - "device": device name to snapshot (json-string) @@ -734,6 +734,10 @@ actions array: - "format": format of new image (json-string, optional) - "reuse": whether QEMU should look for an existing image file (json-bool, optional, default false) + When "type" is "reopen": + - "device": device name to reopen (json-string) + - "target": name of destination image file (json-string) + - "format": format of new image (json-string, optional) Example: -- 1.7.1