Message ID | 20231027074636.430139-4-alexander.ivanov@virtuozzo.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | parallels: Add full dirty bitmap support | expand |
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>
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);
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(-)