From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37778) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zqgsq-0003h4-8A for qemu-devel@nongnu.org; Mon, 26 Oct 2015 08:28:22 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Zqgso-0002B3-1w for qemu-devel@nongnu.org; Mon, 26 Oct 2015 08:28:16 -0400 From: Alberto Garcia Date: Mon, 26 Oct 2015 14:27:12 +0200 Message-Id: Subject: [Qemu-devel] [PATCH v8 0/5] Add 'blockdev-snapshot' command List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Kevin Wolf , Alberto Garcia , qemu-block@nongnu.org, Markus Armbruster , Max Reitz This series adds a new 'blockdev-snapshot' command, that is similar to 'blockdev-snapshot-sync' but takes references to two existing block devices. This finally applies (and works) cleanly on master. Max's patch to allow creating BlockDriverState trees without a BlockBackend is now available as be4b67bc7d99da26b7878f7f45370f50a3bd4af5. Regards, Berto v8: - Rebase on top of the current master - Patch 4: state->new_bs->backing_hd is now state->new_bs->backing v7: https://lists.gnu.org/archive/html/qemu-block/2015-10/msg00273.html - 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