diff options
| author | Vladimir Sementsov-Ogievskiy | 2022-05-17 13:12:06 +0200 |
|---|---|---|
| committer | Kevin Wolf | 2022-06-24 17:07:06 +0200 |
| commit | 618af89e559daf897cc5013d3476a9c41ee76e00 (patch) | |
| tree | b3512de6b37340f2d9aa171f2270cbd2f6114ed4 /include/qemu | |
| parent | block: improve block_dirty_bitmap_merge(): don't allocate extra bitmap (diff) | |
| download | qemu-618af89e559daf897cc5013d3476a9c41ee76e00.tar.gz qemu-618af89e559daf897cc5013d3476a9c41ee76e00.tar.xz qemu-618af89e559daf897cc5013d3476a9c41ee76e00.zip | |
block: simplify handling of try to merge different sized bitmaps
We have too much logic to simply check that bitmaps are of the same
size. Let's just define that hbitmap_merge() and
bdrv_dirty_bitmap_merge_internal() require their argument bitmaps be of
same size, this simplifies things.
Let's look through the callers:
For backup_init_bcs_bitmap() we already assert that merge can't fail.
In bdrv_reclaim_dirty_bitmap_locked() we gracefully handle the error
that can't happen: successor always has same size as its parent, drop
this logic.
In bdrv_merge_dirty_bitmap() we already has assertion and separate
check. Make the check explicit and improve error message.
Signed-off-by: Vladimir Sementsov-Ogievskiy <v.sementsov-og@mail.ru>
Reviewed-by: Nikita Lapshin <nikita.lapshin@virtuozzo.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Message-Id: <20220517111206.23585-4-v.sementsov-og@mail.ru>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Diffstat (limited to 'include/qemu')
| -rw-r--r-- | include/qemu/hbitmap.h | 15 |
1 files changed, 2 insertions, 13 deletions
diff --git a/include/qemu/hbitmap.h b/include/qemu/hbitmap.h index 5bd986aa44..af4e4ab746 100644 --- a/include/qemu/hbitmap.h +++ b/include/qemu/hbitmap.h @@ -76,20 +76,9 @@ void hbitmap_truncate(HBitmap *hb, uint64_t size); * * Store result of merging @a and @b into @result. * @result is allowed to be equal to @a or @b. - * - * Return true if the merge was successful, - * false if it was not attempted. - */ -bool hbitmap_merge(const HBitmap *a, const HBitmap *b, HBitmap *result); - -/** - * hbitmap_can_merge: - * - * hbitmap_can_merge(a, b) && hbitmap_can_merge(a, result) is sufficient and - * necessary for hbitmap_merge will not fail. - * + * All bitmaps must have same size. */ -bool hbitmap_can_merge(const HBitmap *a, const HBitmap *b); +void hbitmap_merge(const HBitmap *a, const HBitmap *b, HBitmap *result); /** * hbitmap_empty: |
