This series adds a new 'blockdev-snapshot' command, that is similar to 'blockdev-snapshot-sync' but takes references to two existing block devices.
This depends on Max's "BlockBackend and media" series: https://lists.gnu.org/archive/html/qemu-block/2015-09/msg00497.html v7: - Rebase on top of the current master. qmp_marshal_input_blockdev_snapshot is renamed to qmp_marshal_blockdev_snapshot in order to make it build. - New patch to use bdrv_lookup_bs() instead of bdrv_find_node() in external_snapshot_prepare(). This way, if the user attempts to use blockdev-snapshot-sync using an existing device ID in the snapshot-node-name parameter, the code will detect the error before the new image is created. v6: https://lists.gnu.org/archive/html/qemu-block/2015-09/msg00575.html - Update documentation and parameter names following Eric's suggestions: 'device' -> 'node', 'snapshot' -> 'overlay'. - Rebased on top of Max's "BlockBackend and media" v5 v5: https://lists.gnu.org/archive/html/qemu-block/2015-09/msg00483.html - Don't delete the 'backing' option if it contains something different from an empty string. - Rebase on top of the current master. v4: https://lists.gnu.org/archive/html/qemu-block/2015-09/msg00372.html - Implement the support for 'backing': '', drop 'ignore-backing', and update iotest 085 accordingly. - Include sample 'blockdev-add' call in the 'blockdev-snapshot' documentation. - Clarify that the snapshot must not have a backing file in the BlockdevSnapshot documentation. - Update error message ("...node name already existing" -> "...exists"). v3: https://lists.gnu.org/archive/html/qemu-block/2015-09/msg00272.html - Add 'ignore-backing' field to BlockdevOptionsGenericCOWFormat. This allows opening images but not their backing images. - Check for op blockers in the snapshot node and make sure that it doesn't have any backing image. - Remove extra check for the existence of the snapshot node: bdrv_open() already does that. - Extend iotest 085 to add tests for 'blockdev-snapshot'. - Replace local_err with errp in some places where the former is unnecessary. - Update command description. - Add 'since' tag to the 'blockdev-snapshot' field in TransactionAction. v2: https://lists.gnu.org/archive/html/qemu-block/2015-09/msg00094.html - Add 'blockdev-snapshot' command instead of allowing passing options to 'blockdev-snapshot-sync'. - Rename BlockdevSnapshot to BlockdevSnapshotSync v1: https://lists.gnu.org/archive/html/qemu-block/2015-08/msg00236.html Alberto Garcia (5): block: check for existing device IDs in external_snapshot_prepare() block: rename BlockdevSnapshot to BlockdevSnapshotSync block: support passing 'backing': '' to 'blockdev-add' block: add a 'blockdev-snapshot' QMP command block: add tests for the 'blockdev-snapshot' command block.c | 7 ++ blockdev.c | 166 ++++++++++++++++++++++++++++----------------- qapi-schema.json | 4 +- qapi/block-core.json | 34 +++++++++- qmp-commands.hx | 38 +++++++++++ tests/qemu-iotests/085 | 102 ++++++++++++++++++++++++++-- tests/qemu-iotests/085.out | 34 +++++++++- 7 files changed, 312 insertions(+), 73 deletions(-) -- 2.6.1