From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45138) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WNch1-0003ka-5t for qemu-devel@nongnu.org; Wed, 12 Mar 2014 02:31:15 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WNcgv-0000RO-5J for qemu-devel@nongnu.org; Wed, 12 Mar 2014 02:31:07 -0400 Received: from mx1.redhat.com ([209.132.183.28]:26123) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WNcgu-0000RA-SM for qemu-devel@nongnu.org; Wed, 12 Mar 2014 02:31:01 -0400 Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s2C6UsUH030251 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Wed, 12 Mar 2014 02:30:56 -0400 From: Fam Zheng Date: Wed, 12 Mar 2014 14:30:55 +0800 Message-Id: <1394605864-32237-1-git-send-email-famz@redhat.com> Subject: [Qemu-devel] [PATCH v2 0/9] QMP: Introduce incremental drive-backup with in-memory dirty bitmap List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: kwolf@redhat.com, stefanha@redhat.com Introduction ------------ This implements incremental backup. A convenient option "bitmap-use-mode" for drive-backup is introduced since v1. Commands -------- A new sync mode for drive-backup is introduced: drive-backup device=.. mode=.. sync=dirty-bitmap bitmap=bitmap0 bitmap-use-mode=reset This mode will scan dirty bitmap "bitmap0" and only copy all dirty sectors to target. bitmap-use-mode controls what operation is done on the given bitmap: - reset: Clear all the bits (block job save a copy) - consume: Block job takes the bitmap and make it invisible to user, and release it after use. A few low level commands related to dirty bitmap are also added: dirty-bitmap-add dirty-bitmap-remove dirty-bitmap-enable dirty-bitmap-disable Example ------- (QMP) dirty-bitmap-add device=? name=bitmap0 [guest writes to device] (QMP) drive-backup device=? target=backup1.qcow2 format=qcow2 \ sync=dirty-bitmap bitmap=bitmap0 bitmap-use-mode=reset [guest writes more to device] (QMP) drive-backup device=? target=backup2.qcow2 format=qcow2 \ sync=dirty-bitmap bitmap=bitmap0 bitmap-use-mode=reset ... Fam Fam Zheng (9): qapi: Add optional field "name" to block dirty bitmap qmp: Add dirty-bitmap-add and dirty-bitmap-remove block: Handle error of bdrv_getlength in bdrv_create_dirty_bitmap block: Introduce bdrv_dirty_bitmap_granularity() hbitmap: Add hbitmap_copy block: Add bdrv_copy_dirty_bitmap and bdrv_reset_dirty_bitmap qmp: Add dirty-bitmap-enable and dirty-bitmap-disable qmp: Add support of "dirty-bitmap" sync mode for drive-backup qapi: Add transaction support to dirty-bitmap-{add,disable} block-migration.c | 3 +- block.c | 90 ++++++++++++++++++++++- block/backup.c | 51 ++++++++++++- block/mirror.c | 6 +- blockdev.c | 181 +++++++++++++++++++++++++++++++++++++++++++++- hmp.c | 4 +- include/block/block.h | 16 +++- include/block/block_int.h | 3 + include/qemu/hbitmap.h | 8 ++ qapi-schema.json | 115 +++++++++++++++++++++++++++-- qmp-commands.hx | 66 ++++++++++++++++- util/hbitmap.c | 13 ++++ 12 files changed, 538 insertions(+), 18 deletions(-) -- 1.9.0