From: Fam Zheng <famz@redhat.com>
To: qemu-devel@nongnu.org
Cc: kwolf@redhat.com, stefanha@redhat.com
Subject: [Qemu-devel] [PATCH v2 0/9] QMP: Introduce incremental drive-backup with in-memory dirty bitmap
Date: Wed, 12 Mar 2014 14:30:55 +0800 [thread overview]
Message-ID: <1394605864-32237-1-git-send-email-famz@redhat.com> (raw)
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
next reply other threads:[~2014-03-12 6:31 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-12 6:30 Fam Zheng [this message]
2014-03-12 6:30 ` [Qemu-devel] [PATCH v2 1/9] qapi: Add optional field "name" to block dirty bitmap Fam Zheng
2014-03-13 13:15 ` Benoît Canet
2014-03-14 7:16 ` Fam Zheng
2014-03-12 6:30 ` [Qemu-devel] [PATCH v2 2/9] qmp: Add dirty-bitmap-add and dirty-bitmap-remove Fam Zheng
2014-03-13 13:26 ` Benoît Canet
2014-03-14 7:18 ` Fam Zheng
2014-03-14 12:32 ` Eric Blake
2014-03-12 6:30 ` [Qemu-devel] [PATCH v2 3/9] block: Handle error of bdrv_getlength in bdrv_create_dirty_bitmap Fam Zheng
2014-03-13 13:29 ` Benoît Canet
2014-03-12 6:30 ` [Qemu-devel] [PATCH v2 4/9] block: Introduce bdrv_dirty_bitmap_granularity() Fam Zheng
2014-03-13 13:30 ` Benoît Canet
2014-03-12 6:31 ` [Qemu-devel] [PATCH v2 5/9] hbitmap: Add hbitmap_copy Fam Zheng
2014-03-13 13:45 ` Benoît Canet
2014-03-13 14:28 ` Paolo Bonzini
2014-03-20 10:22 ` Paolo Bonzini
2014-03-20 10:47 ` Fam Zheng
2014-03-12 6:31 ` [Qemu-devel] [PATCH v2 6/9] block: Add bdrv_copy_dirty_bitmap and bdrv_reset_dirty_bitmap Fam Zheng
2014-03-12 6:31 ` [Qemu-devel] [PATCH v2 7/9] qmp: Add dirty-bitmap-enable and dirty-bitmap-disable Fam Zheng
2014-03-13 13:55 ` Benoît Canet
2014-03-14 7:25 ` Fam Zheng
2014-03-12 6:31 ` [Qemu-devel] [PATCH v2 8/9] qmp: Add support of "dirty-bitmap" sync mode for drive-backup Fam Zheng
2014-03-13 14:32 ` Benoît Canet
2014-03-14 7:27 ` Fam Zheng
2014-03-12 6:31 ` [Qemu-devel] [PATCH v2 9/9] qapi: Add transaction support to dirty-bitmap-{add, disable} Fam Zheng
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1394605864-32237-1-git-send-email-famz@redhat.com \
--to=famz@redhat.com \
--cc=kwolf@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).