From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38498) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fnNu9-0004d9-MC for qemu-devel@nongnu.org; Wed, 08 Aug 2018 08:49:34 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fnNu6-0004DE-9q for qemu-devel@nongnu.org; Wed, 08 Aug 2018 08:49:33 -0400 From: Vladimir Sementsov-Ogievskiy Date: Wed, 8 Aug 2018 15:49:18 +0300 Message-Id: <20180808124925.21031-1-vsementsov@virtuozzo.com> Subject: [Qemu-devel] [PATCH v2 0/7] dirty-bitmap: rewrite bdrv_dirty_iter_next_area List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org, qemu-block@nongnu.org Cc: pbonzini@redhat.com, eblake@redhat.com, jsnow@redhat.com, famz@redhat.com, mreitz@redhat.com, kwolf@redhat.com, jcody@redhat.com, vsementsov@virtuozzo.com, den@openvz.org Hi all. 1. bdrv_dirty_iter_next_area don't use hbitmap_next_zero and uses inefficient loop instead. Let's improve it. 2. bdrv_dirty_iter_next_area don't handle unaligned offset and max_offset correctly. I'm not sure that it is a real bug. But if it is, we need these series in 3.0. Details are in 04 commit message. v2: 01: - improve comment - s/bytes/count/ - fix forgotten function call in test - introduce orig_size field here for HBitmap, make checking in hbitmap_next_zero more effective and safe 02: new 03: - orig_size already introduced in 01 - fix hbitmap_next_dirty_area to not return value less than offset on unaligned requests Vladimir Sementsov-Ogievskiy (7): dirty-bitmap: improve bdrv_dirty_bitmap_next_zero tests: add tests for hbitmap_next_zero with non-zero count parameter dirty-bitmap: add bdrv_dirty_bitmap_next_dirty_area block/mirror: fix and improve do_sync_target_write Revert "block/dirty-bitmap: Add bdrv_dirty_iter_next_area" Revert "test-hbitmap: Add non-advancing iter_next tests" Revert "hbitmap: Add @advance param to hbitmap_iter_next()" include/block/dirty-bitmap.h | 8 +++-- include/qemu/hbitmap.h | 30 ++++++++++++++---- block/backup.c | 4 +-- block/dirty-bitmap.c | 69 +++++++---------------------------------- block/mirror.c | 16 +++++----- nbd/server.c | 2 +- tests/test-hbitmap.c | 69 +++++++++++++++++++++++------------------ util/hbitmap.c | 73 ++++++++++++++++++++++++++++++++++++-------- 8 files changed, 151 insertions(+), 120 deletions(-) -- 2.11.1