Message ID | 20210216164527.37745-2-vsementsov@virtuozzo.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | parallels: load bitmap extension | expand |
On 2/16/21 10:45 AM, Vladimir Sementsov-Ogievskiy wrote: > Rename bytes_covered_by_bitmap_cluster() to > bdrv_dirty_bitmap_serialization_coverage() and make it public. It is > needed as we are going to make load_bitmap_data() public in the next > commit. > > Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> > --- > include/block/dirty-bitmap.h | 2 ++ > block/dirty-bitmap.c | 13 +++++++++++++ > block/qcow2-bitmap.c | 16 ++-------------- > 3 files changed, 17 insertions(+), 14 deletions(-) > Reviewed-by: Eric Blake <eblake@redhat.com>
16.02.2021 19:45, Vladimir Sementsov-Ogievskiy wrote: > Rename bytes_covered_by_bitmap_cluster() to > bdrv_dirty_bitmap_serialization_coverage() and make it public. It is > needed as we are going to make load_bitmap_data() public in the next > commit. Not we are not. So the last sentence should be changed to It is needed as we are going to share it with bitmap loading in parallels format. I started from sharing load_bitmap_data() function, but than dropped this idea. > > Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> > --- > include/block/dirty-bitmap.h | 2 ++ > block/dirty-bitmap.c | 13 +++++++++++++ > block/qcow2-bitmap.c | 16 ++-------------- > 3 files changed, 17 insertions(+), 14 deletions(-) > > diff --git a/include/block/dirty-bitmap.h b/include/block/dirty-bitmap.h > index 36e8da4fc2..f581cf9fd7 100644 > --- a/include/block/dirty-bitmap.h > +++ b/include/block/dirty-bitmap.h > @@ -57,6 +57,8 @@ void bdrv_dirty_iter_free(BdrvDirtyBitmapIter *iter); > uint64_t bdrv_dirty_bitmap_serialization_size(const BdrvDirtyBitmap *bitmap, > uint64_t offset, uint64_t bytes); > uint64_t bdrv_dirty_bitmap_serialization_align(const BdrvDirtyBitmap *bitmap); > +uint64_t bdrv_dirty_bitmap_serialization_coverage(int serialized_chunk_size, > + const BdrvDirtyBitmap *bitmap); > void bdrv_dirty_bitmap_serialize_part(const BdrvDirtyBitmap *bitmap, > uint8_t *buf, uint64_t offset, > uint64_t bytes); > diff --git a/block/dirty-bitmap.c b/block/dirty-bitmap.c > index 9b9cd71238..a0eaa28785 100644 > --- a/block/dirty-bitmap.c > +++ b/block/dirty-bitmap.c > @@ -726,6 +726,19 @@ uint64_t bdrv_dirty_bitmap_serialization_align(const BdrvDirtyBitmap *bitmap) > return hbitmap_serialization_align(bitmap->bitmap); > } > > +/* Return the disk size covered by a chunk of serialized bitmap data. */ > +uint64_t bdrv_dirty_bitmap_serialization_coverage(int serialized_chunk_size, > + const BdrvDirtyBitmap *bitmap) > +{ > + uint64_t granularity = bdrv_dirty_bitmap_granularity(bitmap); > + uint64_t limit = granularity * (serialized_chunk_size << 3); > + > + assert(QEMU_IS_ALIGNED(limit, > + bdrv_dirty_bitmap_serialization_align(bitmap))); > + return limit; > +} > + > + > void bdrv_dirty_bitmap_serialize_part(const BdrvDirtyBitmap *bitmap, > uint8_t *buf, uint64_t offset, > uint64_t bytes) > diff --git a/block/qcow2-bitmap.c b/block/qcow2-bitmap.c > index 5eef82fa55..42d81c44cd 100644 > --- a/block/qcow2-bitmap.c > +++ b/block/qcow2-bitmap.c > @@ -278,18 +278,6 @@ static int free_bitmap_clusters(BlockDriverState *bs, Qcow2BitmapTable *tb) > return 0; > } > > -/* Return the disk size covered by a single qcow2 cluster of bitmap data. */ > -static uint64_t bytes_covered_by_bitmap_cluster(const BDRVQcow2State *s, > - const BdrvDirtyBitmap *bitmap) > -{ > - uint64_t granularity = bdrv_dirty_bitmap_granularity(bitmap); > - uint64_t limit = granularity * (s->cluster_size << 3); > - > - assert(QEMU_IS_ALIGNED(limit, > - bdrv_dirty_bitmap_serialization_align(bitmap))); > - return limit; > -} > - > /* load_bitmap_data > * @bitmap_table entries must satisfy specification constraints. > * @bitmap must be cleared */ > @@ -312,7 +300,7 @@ static int load_bitmap_data(BlockDriverState *bs, > } > > buf = g_malloc(s->cluster_size); > - limit = bytes_covered_by_bitmap_cluster(s, bitmap); > + limit = bdrv_dirty_bitmap_serialization_coverage(s->cluster_size, bitmap); > for (i = 0, offset = 0; i < tab_size; ++i, offset += limit) { > uint64_t count = MIN(bm_size - offset, limit); > uint64_t entry = bitmap_table[i]; > @@ -1303,7 +1291,7 @@ static uint64_t *store_bitmap_data(BlockDriverState *bs, > } > > buf = g_malloc(s->cluster_size); > - limit = bytes_covered_by_bitmap_cluster(s, bitmap); > + limit = bdrv_dirty_bitmap_serialization_coverage(s->cluster_size, bitmap); > assert(DIV_ROUND_UP(bm_size, limit) == tb_size); > > offset = 0; >
On 2/16/21 7:45 PM, Vladimir Sementsov-Ogievskiy wrote: > Rename bytes_covered_by_bitmap_cluster() to > bdrv_dirty_bitmap_serialization_coverage() and make it public. It is > needed as we are going to make load_bitmap_data() public in the next > commit. > > Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> > --- > include/block/dirty-bitmap.h | 2 ++ > block/dirty-bitmap.c | 13 +++++++++++++ > block/qcow2-bitmap.c | 16 ++-------------- > 3 files changed, 17 insertions(+), 14 deletions(-) > > diff --git a/include/block/dirty-bitmap.h b/include/block/dirty-bitmap.h > index 36e8da4fc2..f581cf9fd7 100644 > --- a/include/block/dirty-bitmap.h > +++ b/include/block/dirty-bitmap.h > @@ -57,6 +57,8 @@ void bdrv_dirty_iter_free(BdrvDirtyBitmapIter *iter); > uint64_t bdrv_dirty_bitmap_serialization_size(const BdrvDirtyBitmap *bitmap, > uint64_t offset, uint64_t bytes); > uint64_t bdrv_dirty_bitmap_serialization_align(const BdrvDirtyBitmap *bitmap); > +uint64_t bdrv_dirty_bitmap_serialization_coverage(int serialized_chunk_size, > + const BdrvDirtyBitmap *bitmap); > void bdrv_dirty_bitmap_serialize_part(const BdrvDirtyBitmap *bitmap, > uint8_t *buf, uint64_t offset, > uint64_t bytes); > diff --git a/block/dirty-bitmap.c b/block/dirty-bitmap.c > index 9b9cd71238..a0eaa28785 100644 > --- a/block/dirty-bitmap.c > +++ b/block/dirty-bitmap.c > @@ -726,6 +726,19 @@ uint64_t bdrv_dirty_bitmap_serialization_align(const BdrvDirtyBitmap *bitmap) > return hbitmap_serialization_align(bitmap->bitmap); > } > > +/* Return the disk size covered by a chunk of serialized bitmap data. */ > +uint64_t bdrv_dirty_bitmap_serialization_coverage(int serialized_chunk_size, > + const BdrvDirtyBitmap *bitmap) > +{ > + uint64_t granularity = bdrv_dirty_bitmap_granularity(bitmap); > + uint64_t limit = granularity * (serialized_chunk_size << 3); > + > + assert(QEMU_IS_ALIGNED(limit, > + bdrv_dirty_bitmap_serialization_align(bitmap))); > + return limit; > +} > + > + > void bdrv_dirty_bitmap_serialize_part(const BdrvDirtyBitmap *bitmap, > uint8_t *buf, uint64_t offset, > uint64_t bytes) > diff --git a/block/qcow2-bitmap.c b/block/qcow2-bitmap.c > index 5eef82fa55..42d81c44cd 100644 > --- a/block/qcow2-bitmap.c > +++ b/block/qcow2-bitmap.c > @@ -278,18 +278,6 @@ static int free_bitmap_clusters(BlockDriverState *bs, Qcow2BitmapTable *tb) > return 0; > } > > -/* Return the disk size covered by a single qcow2 cluster of bitmap data. */ > -static uint64_t bytes_covered_by_bitmap_cluster(const BDRVQcow2State *s, > - const BdrvDirtyBitmap *bitmap) > -{ > - uint64_t granularity = bdrv_dirty_bitmap_granularity(bitmap); > - uint64_t limit = granularity * (s->cluster_size << 3); > - > - assert(QEMU_IS_ALIGNED(limit, > - bdrv_dirty_bitmap_serialization_align(bitmap))); > - return limit; > -} > - > /* load_bitmap_data > * @bitmap_table entries must satisfy specification constraints. > * @bitmap must be cleared */ > @@ -312,7 +300,7 @@ static int load_bitmap_data(BlockDriverState *bs, > } > > buf = g_malloc(s->cluster_size); > - limit = bytes_covered_by_bitmap_cluster(s, bitmap); > + limit = bdrv_dirty_bitmap_serialization_coverage(s->cluster_size, bitmap); > for (i = 0, offset = 0; i < tab_size; ++i, offset += limit) { > uint64_t count = MIN(bm_size - offset, limit); > uint64_t entry = bitmap_table[i]; > @@ -1303,7 +1291,7 @@ static uint64_t *store_bitmap_data(BlockDriverState *bs, > } > > buf = g_malloc(s->cluster_size); > - limit = bytes_covered_by_bitmap_cluster(s, bitmap); > + limit = bdrv_dirty_bitmap_serialization_coverage(s->cluster_size, bitmap); > assert(DIV_ROUND_UP(bm_size, limit) == tb_size); > > offset = 0; Reviewed-by: Denis V. Lunev <den@openvz.org>
diff --git a/include/block/dirty-bitmap.h b/include/block/dirty-bitmap.h index 36e8da4fc2..f581cf9fd7 100644 --- a/include/block/dirty-bitmap.h +++ b/include/block/dirty-bitmap.h @@ -57,6 +57,8 @@ void bdrv_dirty_iter_free(BdrvDirtyBitmapIter *iter); uint64_t bdrv_dirty_bitmap_serialization_size(const BdrvDirtyBitmap *bitmap, uint64_t offset, uint64_t bytes); uint64_t bdrv_dirty_bitmap_serialization_align(const BdrvDirtyBitmap *bitmap); +uint64_t bdrv_dirty_bitmap_serialization_coverage(int serialized_chunk_size, + const BdrvDirtyBitmap *bitmap); void bdrv_dirty_bitmap_serialize_part(const BdrvDirtyBitmap *bitmap, uint8_t *buf, uint64_t offset, uint64_t bytes); diff --git a/block/dirty-bitmap.c b/block/dirty-bitmap.c index 9b9cd71238..a0eaa28785 100644 --- a/block/dirty-bitmap.c +++ b/block/dirty-bitmap.c @@ -726,6 +726,19 @@ uint64_t bdrv_dirty_bitmap_serialization_align(const BdrvDirtyBitmap *bitmap) return hbitmap_serialization_align(bitmap->bitmap); } +/* Return the disk size covered by a chunk of serialized bitmap data. */ +uint64_t bdrv_dirty_bitmap_serialization_coverage(int serialized_chunk_size, + const BdrvDirtyBitmap *bitmap) +{ + uint64_t granularity = bdrv_dirty_bitmap_granularity(bitmap); + uint64_t limit = granularity * (serialized_chunk_size << 3); + + assert(QEMU_IS_ALIGNED(limit, + bdrv_dirty_bitmap_serialization_align(bitmap))); + return limit; +} + + void bdrv_dirty_bitmap_serialize_part(const BdrvDirtyBitmap *bitmap, uint8_t *buf, uint64_t offset, uint64_t bytes) diff --git a/block/qcow2-bitmap.c b/block/qcow2-bitmap.c index 5eef82fa55..42d81c44cd 100644 --- a/block/qcow2-bitmap.c +++ b/block/qcow2-bitmap.c @@ -278,18 +278,6 @@ static int free_bitmap_clusters(BlockDriverState *bs, Qcow2BitmapTable *tb) return 0; } -/* Return the disk size covered by a single qcow2 cluster of bitmap data. */ -static uint64_t bytes_covered_by_bitmap_cluster(const BDRVQcow2State *s, - const BdrvDirtyBitmap *bitmap) -{ - uint64_t granularity = bdrv_dirty_bitmap_granularity(bitmap); - uint64_t limit = granularity * (s->cluster_size << 3); - - assert(QEMU_IS_ALIGNED(limit, - bdrv_dirty_bitmap_serialization_align(bitmap))); - return limit; -} - /* load_bitmap_data * @bitmap_table entries must satisfy specification constraints. * @bitmap must be cleared */ @@ -312,7 +300,7 @@ static int load_bitmap_data(BlockDriverState *bs, } buf = g_malloc(s->cluster_size); - limit = bytes_covered_by_bitmap_cluster(s, bitmap); + limit = bdrv_dirty_bitmap_serialization_coverage(s->cluster_size, bitmap); for (i = 0, offset = 0; i < tab_size; ++i, offset += limit) { uint64_t count = MIN(bm_size - offset, limit); uint64_t entry = bitmap_table[i]; @@ -1303,7 +1291,7 @@ static uint64_t *store_bitmap_data(BlockDriverState *bs, } buf = g_malloc(s->cluster_size); - limit = bytes_covered_by_bitmap_cluster(s, bitmap); + limit = bdrv_dirty_bitmap_serialization_coverage(s->cluster_size, bitmap); assert(DIV_ROUND_UP(bm_size, limit) == tb_size); offset = 0;
Rename bytes_covered_by_bitmap_cluster() to bdrv_dirty_bitmap_serialization_coverage() and make it public. It is needed as we are going to make load_bitmap_data() public in the next commit. Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> --- include/block/dirty-bitmap.h | 2 ++ block/dirty-bitmap.c | 13 +++++++++++++ block/qcow2-bitmap.c | 16 ++-------------- 3 files changed, 17 insertions(+), 14 deletions(-)