[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 0/9] QMP: Introduce incremental drive-backup with
From: |
Fam Zheng |
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 |
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