[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v3 0/9] QMP: Introduce incremental drive-backup with
From: |
Fam Zheng |
Subject: |
[Qemu-devel] [PATCH v3 0/9] QMP: Introduce incremental drive-backup with in-memory dirty bitmap |
Date: |
Mon, 17 Mar 2014 15:46:32 +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
...
v3:
Address Benoit's comments.
[01/09] qapi: Add optional field "name" to block dirty bitmap
Don't split line.
[03/09] block: Handle error of bdrv_getlength in bdrv_create_dirty_bitmap
Add reviewed-by.
[04/09] block: Introduce bdrv_dirty_bitmap_granularity()
Add reviewed-by.
[05/09] hbitmap: Add hbitmap_copy
Fix size calculation.
[08/09] qmp: Add support of "dirty-bitmap" sync mode for drive-backup
Fix typo in commit message.
Add comment for sync_bitmap_gran.
Add (Since 2.1).
Thanks,
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 | 89 ++++++++++++++++++++++-
block/backup.c | 53 +++++++++++++-
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 | 116 +++++++++++++++++++++++++++--
qmp-commands.hx | 66 ++++++++++++++++-
util/hbitmap.c | 16 ++++
12 files changed, 543 insertions(+), 18 deletions(-)
--
1.9.0
- [Qemu-devel] [PATCH v3 0/9] QMP: Introduce incremental drive-backup with in-memory dirty bitmap,
Fam Zheng <=
- [Qemu-devel] [PATCH v3 1/9] qapi: Add optional field "name" to block dirty bitmap, Fam Zheng, 2014/03/17
- [Qemu-devel] [PATCH v3 3/9] block: Handle error of bdrv_getlength in bdrv_create_dirty_bitmap, Fam Zheng, 2014/03/17
- [Qemu-devel] [PATCH v3 2/9] qmp: Add dirty-bitmap-add and dirty-bitmap-remove, Fam Zheng, 2014/03/17
- [Qemu-devel] [PATCH v3 5/9] hbitmap: Add hbitmap_copy, Fam Zheng, 2014/03/17
- [Qemu-devel] [PATCH v3 7/9] qmp: Add dirty-bitmap-enable and dirty-bitmap-disable, Fam Zheng, 2014/03/17
- [Qemu-devel] [PATCH v3 9/9] qapi: Add transaction support to dirty-bitmap-{add, disable}, Fam Zheng, 2014/03/17
- [Qemu-devel] [PATCH v3 4/9] block: Introduce bdrv_dirty_bitmap_granularity(), Fam Zheng, 2014/03/17
- [Qemu-devel] [PATCH v3 6/9] block: Add bdrv_copy_dirty_bitmap and bdrv_reset_dirty_bitmap, Fam Zheng, 2014/03/17
- [Qemu-devel] [PATCH v3 8/9] qmp: Add support of "dirty-bitmap" sync mode for drive-backup, Fam Zheng, 2014/03/17