From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56604) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Uw6Qp-0001G0-PV for qemu-devel@nongnu.org; Mon, 08 Jul 2013 04:04:25 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Uw6Qo-0008BP-Ex for qemu-devel@nongnu.org; Mon, 08 Jul 2013 04:04:23 -0400 Received: from e28smtp04.in.ibm.com ([122.248.162.4]:33733) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Uw6Qn-0008BE-Rp for qemu-devel@nongnu.org; Mon, 08 Jul 2013 04:04:22 -0400 Received: from /spool/local by e28smtp04.in.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Mon, 8 Jul 2013 13:27:41 +0530 Received: from d28relay05.in.ibm.com (d28relay05.in.ibm.com [9.184.220.62]) by d28dlp02.in.ibm.com (Postfix) with ESMTP id 4F665394004E for ; Mon, 8 Jul 2013 13:34:13 +0530 (IST) Received: from d28av05.in.ibm.com (d28av05.in.ibm.com [9.184.220.67]) by d28relay05.in.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id r6884Ccm17891404 for ; Mon, 8 Jul 2013 13:34:12 +0530 Received: from d28av05.in.ibm.com (loopback [127.0.0.1]) by d28av05.in.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id r6884D2V005277 for ; Mon, 8 Jul 2013 18:04:14 +1000 From: Wenchao Xia Date: Mon, 8 Jul 2013 16:00:42 +0800 Message-Id: <1373270451-18436-1-git-send-email-xiawenc@linux.vnet.ibm.com> Subject: [Qemu-devel] [PATCH V4 0/9] add internal snapshot support at block device level List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: kwolf@redhat.com, phrdina@redhat.com, famz@redhat.com, Wenchao Xia , armbru@redhat.com, lcapitulino@redhat.com, stefanha@redhat.com, pbonzini@redhat.com, dietmar@proxmox.com This series brings internal snapshot support at block devices level, now we have two three methods to do block snapshot lively: 1) backing chain, 2) internal one and 3) drive-back up approach. Comparation: Advantages: Disadvantages: 1) delta data, taken fast, export, size performance, delete slow. 2) taken fast, delete fast, performance, size delta data, format 3) performance, export, format taken slow, delta data, size I think in most case, saving vmstate in an standalone file is better than saving it inside qcow2, So suggest treat internal snapshot as block level methods and not encourage user to savevm in qcow2 any more. Implemention details: To avoid trouble, this serial have hide ID in create interfaces, this make sure no chaos of ID and name will be introduced by these interfaces. There is one patch may be common to Pavel's savvm transaction, patch 1/11, others are not quite related. Patch 1/11 will not set errp when no snapshot find, since patch 3/11 need to distinguish real error case. Next steps to better full VM snapshot: Improve internal snapshot's export capability. Better vmstate saving. Thanks Kevin to give advisement about how add it in qmp_transaction, oldest version comes drom Dietmar Maurer. v3: General: Rebased after Stenfan's driver-backup patch V6. Address Eric's comments: 4/9: grammar fix and better doc. 5/9: parameter name is mandatory now. grammar fix. 6/9: redesiged interface: take both id and name as optional parameter, return the deleted snapshot's info. Address Stefan's comments: 4/9: add '' around %s in message. drop code comments about vm_clock. 9/9: better doc, refined the code and add more test case. v4: Address Stefan's comments: 4/9: use error_setg_errno() to show error reason for bdrv_snapshot_create(), spell fix and better doc. 5/9: better doc. 6/9: remove spurious ';' in code, spell fix and better doc. Wenchao Xia (9): 1 snapshot: new function bdrv_snapshot_find_by_id_and_name() 2 snapshot: add paired functions for internal snapshot id and name 3 snapshot: distinguish id and name in snapshot delete 4 qmp: add internal snapshot support in qmp_transaction 5 qmp: add interface blockdev-snapshot-internal-sync 6 qmp: add interface blockdev-snapshot-delete-internal-sync 7 hmp: add interface hmp_snapshot_blkdev_internal 8 hmp: add interface hmp_snapshot_delete_blkdev_internal 9 qemu-iotests: add 056 internal snapshot for block device test case block/qcow2-snapshot.c | 68 +++++++++--- block/qcow2.h | 5 +- block/rbd.c | 23 ++++- block/sheepdog.c | 5 +- block/snapshot.c | 130 +++++++++++++++++++++- blockdev.c | 194 ++++++++++++++++++++++++++++++++ hmp-commands.hx | 37 ++++++- hmp.c | 22 ++++ hmp.h | 2 + include/block/block_int.h | 5 +- include/block/snapshot.h | 14 ++- include/qemu-common.h | 3 + qapi-schema.json | 67 +++++++++++- qemu-img.c | 5 +- qmp-commands.hx | 105 ++++++++++++++++- savevm.c | 10 ++- tests/qemu-iotests/056 | 267 ++++++++++++++++++++++++++++++++++++++++++++ tests/qemu-iotests/056.out | 5 + tests/qemu-iotests/group | 1 + 19 files changed, 930 insertions(+), 38 deletions(-) create mode 100755 tests/qemu-iotests/056 create mode 100644 tests/qemu-iotests/056.out