From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53581) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bpvRm-0003ZB-8T for qemu-devel@nongnu.org; Fri, 30 Sep 2016 06:53:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bpvRi-00008n-58 for qemu-devel@nongnu.org; Fri, 30 Sep 2016 06:53:41 -0400 Received: from mailhub.sw.ru ([195.214.232.25]:28596 helo=relay.sw.ru) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bpvRh-0008WO-Om for qemu-devel@nongnu.org; Fri, 30 Sep 2016 06:53:38 -0400 From: Vladimir Sementsov-Ogievskiy Date: Fri, 30 Sep 2016 13:53:06 +0300 Message-Id: <1475232808-4852-1-git-send-email-vsementsov@virtuozzo.com> Subject: [Qemu-devel] [PATCH v7 00/22] qcow2: persistent dirty bitmaps List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-block@nongnu.org, qemu-devel@nongnu.org Cc: kwolf@redhat.com, mreitz@redhat.com, armbru@redhat.com, eblake@redhat.com, jsnow@redhat.com, famz@redhat.com, den@openvz.org, stefanha@redhat.com, vsementsov@virtuozzo.com, pbonzini@redhat.com v7: https://src.openvz.org/users/vsementsov/repos/qemu/browse?at=refs%2Ftags%2Fqcow2-bitmap-v7 based on block-next (https://github.com/XanClic/qemu/commits/block-next) - a lot of refactoring and reordering of patches. - dead code removed (bdrv_dirty_bitmap_load, etc.) - do not maintain extra data for now - do not store dirty bitmap directory in memory (as we use it seldom, we can just reread if needed) By Kevin's review: 01 - commit message changed: fix->improvement (as it was not a bug) 03 - r-b 04 - r-b 05 - add 21 patch to fix spec, also, removed all (I hope) mentions of "Bitmap Header", switch to one unified name for it - "Bitmap Directory Entry", to avoid misunderstanding with Qcow2 header. (also, add patch 22, to fix it in spec) v6.06 - improve for_each_dir_entry loop, reorder patches, other small fixes v6.07 ~> v7.09 - dead code removed, I've moved to one function .bdrv_store_persistent_bitmaps and have wrapper and callback in one patch (with also some other staff. If it not ok, I can split them) v6.08 - about keeping bitmap directory instead of bitmap list: no I don't keep it at all. v6.16 - old bdrv_ bitmap-storing related functions are removed. The new one is bdrv_store_persistent_bitmaps. v6: https://src.openvz.org/users/vsementsov/repos/qemu/browse?at=refs%2Ftags%2Fqcow2-bitmap-v6 based on block-next (https://github.com/XanClic/qemu/commits/block-next) There are a lot of changes, reorderings and additions in comparement with v5. One principal thing: now bitmaps are removed from image after loading instead of marking them in_use. It is simpler and we do not need to store superfluous data. Also, we are no more interested in command line interface to dirty bitmaps. So it is dropped. If someone needs it I can add it later. Vladimir Sementsov-Ogievskiy (22): hbitmap: improve dirty iter tests: add hbitmap iter test block: fix bdrv_dirty_bitmap_granularity signature block/dirty-bitmap: add deserialize_ones func qcow2-bitmap: structs and consts qcow2: add dirty bitmaps extension qcow2-bitmap: introduce auto-loading bitmaps block/dirty-bitmap: add autoload field to BdrvDirtyBitmap block: introduce persistent dirty bitmaps block/dirty-bitmap: add bdrv_dirty_bitmap_next() qcow2-bitmap: add qcow2_store_persistent_bitmaps() qcow2-bitmap: add IN_USE flag qcow2-bitmap: check constraints qcow2: delete bitmaps on truncate qcow2-bitmap: add autoclear bit qmp: add persistent flag to block-dirty-bitmap-add qmp: add autoload parameter to block-dirty-bitmap-add qapi: add md5 checksum of last dirty bitmap level to query-block iotests: test qcow2 persistent dirty bitmap qcow2-dirty-bitmap: refcounts specs/qcow2: fix bitmap granularity qemu-specific note specs/qcow2: do not use wording 'bitmap header' block.c | 30 ++ block/Makefile.objs | 2 +- block/dirty-bitmap.c | 59 ++- block/qcow2-bitmap.c | 963 +++++++++++++++++++++++++++++++++++++++++++ block/qcow2-refcount.c | 14 +- block/qcow2.c | 105 ++++- block/qcow2.h | 54 +++ blockdev.c | 30 +- docs/specs/qcow2.txt | 8 +- include/block/block.h | 2 + include/block/block_int.h | 2 + include/block/dirty-bitmap.h | 16 +- include/qemu/hbitmap.h | 47 ++- qapi/block-core.json | 17 +- qmp-commands.hx | 8 +- tests/qemu-iotests/165 | 87 ++++ tests/qemu-iotests/165.out | 5 + tests/qemu-iotests/group | 1 + tests/test-hbitmap.c | 19 + util/hbitmap.c | 48 ++- 20 files changed, 1475 insertions(+), 42 deletions(-) create mode 100644 block/qcow2-bitmap.c create mode 100755 tests/qemu-iotests/165 create mode 100644 tests/qemu-iotests/165.out -- 1.8.3.1