On 10/27/23 09:46, Alexander Ivanov wrote:
> We will need this function and a function for marking unused clusters (will
> be added in the next patch) in parallels-ext.c too. Let it be a global
> function parallels_mark_used().
>
> Signed-off-by: Alexander Ivanov <alexander.ivanov@virtuozzo.com>
> ---
> block/parallels.c | 14 ++++++++------
> block/parallels.h | 3 +++
> 2 files changed, 11 insertions(+), 6 deletions(-)
>
> diff --git a/block/parallels.c b/block/parallels.c
> index 8962bc9fe5..e9a8cbe430 100644
> --- a/block/parallels.c
> +++ b/block/parallels.c
> @@ -178,8 +178,8 @@ static void parallels_set_bat_entry(BDRVParallelsState *s,
> bitmap_set(s->bat_dirty_bmap, bat_entry_off(index) / s->bat_dirty_block, 1);
> }
>
> -static int mark_used(BlockDriverState *bs, unsigned long *bitmap,
> - uint32_t bitmap_size, int64_t off, uint32_t count)
> +int parallels_mark_used(BlockDriverState *bs, unsigned long *bitmap,
> + uint32_t bitmap_size, int64_t off, uint32_t count)
> {
> BDRVParallelsState *s = bs->opaque;
> uint32_t cluster_index = host_cluster_index(s, off);
> @@ -232,7 +232,8 @@ static int parallels_fill_used_bitmap(BlockDriverState *bs)
> continue;
> }
>
> - err2 = mark_used(bs, s->used_bmap, s->used_bmap_size, host_off, 1);
> + err2 = parallels_mark_used(bs, s->used_bmap, s->used_bmap_size,
> + host_off, 1);
> if (err2 < 0 && err == 0) {
> err = err2;
> }
> @@ -366,7 +367,8 @@ allocate_clusters(BlockDriverState *bs, int64_t sector_num,
> }
> }
>
> - ret = mark_used(bs, s->used_bmap, s->used_bmap_size, host_off, to_allocate);
> + ret = parallels_mark_used(bs, s->used_bmap, s->used_bmap_size,
> + host_off, to_allocate);
> if (ret < 0) {
> /* Image consistency is broken. Alarm! */
> return ret;
> @@ -831,7 +833,7 @@ parallels_check_duplicate(BlockDriverState *bs, BdrvCheckResult *res,
> continue;
> }
>
> - ret = mark_used(bs, bitmap, bitmap_size, host_off, 1);
> + ret = parallels_mark_used(bs, bitmap, bitmap_size, host_off, 1);
> assert(ret != -E2BIG);
> if (ret == 0) {
> continue;
> @@ -891,7 +893,7 @@ parallels_check_duplicate(BlockDriverState *bs, BdrvCheckResult *res,
> * considered, and the bitmap size doesn't change. This specifically
> * means that -E2BIG is OK.
> */
> - ret = mark_used(bs, bitmap, bitmap_size, host_off, 1);
> + ret = parallels_mark_used(bs, bitmap, bitmap_size, host_off, 1);
> if (ret == -EBUSY) {
> res->check_errors++;
> goto out_repair_bat;
> diff --git a/block/parallels.h b/block/parallels.h
> index 6b199443cf..bb18ee0527 100644
> --- a/block/parallels.h
> +++ b/block/parallels.h
> @@ -90,6 +90,9 @@ typedef struct BDRVParallelsState {
> Error *migration_blocker;
> } BDRVParallelsState;
>
> +int parallels_mark_used(BlockDriverState *bs, unsigned long *bitmap,
> + uint32_t bitmap_size, int64_t off, uint32_t count);
> +
> int parallels_read_format_extension(BlockDriverState *bs,
> int64_t ext_off, Error **errp);
>
Reviewed-by: Denis V. Lunev <den@openvz.org>