summaryrefslogtreecommitdiffstats
path: root/util
diff options
context:
space:
mode:
authorVladimir Sementsov-Ogievskiy2017-06-28 14:05:06 +0200
committerMax Reitz2017-07-11 17:44:57 +0200
commit6bdc8b719a1617ec5ddfb13e78054df22fa12f84 (patch)
tree1cca120356705de5416ee6e24498692bc50b4b37 /util
parentblock: fix bdrv_dirty_bitmap_granularity signature (diff)
downloadqemu-6bdc8b719a1617ec5ddfb13e78054df22fa12f84.tar.gz
qemu-6bdc8b719a1617ec5ddfb13e78054df22fa12f84.tar.xz
qemu-6bdc8b719a1617ec5ddfb13e78054df22fa12f84.zip
block/dirty-bitmap: add deserialize_ones func
Add bdrv_dirty_bitmap_deserialize_ones() function, which is needed for qcow2 bitmap loading, to handle unallocated bitmap parts, marked as all-ones. Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> Reviewed-by: Kevin Wolf <kwolf@redhat.com> Reviewed-by: John Snow <jsnow@redhat.com> Message-id: 20170628120530.31251-7-vsementsov@virtuozzo.com Signed-off-by: Max Reitz <mreitz@redhat.com>
Diffstat (limited to 'util')
-rw-r--r--util/hbitmap.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/util/hbitmap.c b/util/hbitmap.c
index 0b38817505..0c1591a594 100644
--- a/util/hbitmap.c
+++ b/util/hbitmap.c
@@ -551,6 +551,23 @@ void hbitmap_deserialize_zeroes(HBitmap *hb, uint64_t start, uint64_t count,
}
}
+void hbitmap_deserialize_ones(HBitmap *hb, uint64_t start, uint64_t count,
+ bool finish)
+{
+ uint64_t el_count;
+ unsigned long *first;
+
+ if (!count) {
+ return;
+ }
+ serialization_chunk(hb, start, count, &first, &el_count);
+
+ memset(first, 0xff, el_count * sizeof(unsigned long));
+ if (finish) {
+ hbitmap_deserialize_finish(hb);
+ }
+}
+
void hbitmap_deserialize_finish(HBitmap *bitmap)
{
int64_t i, size, prev_size;