On 10/21/23 15:29, Mike Maslenkin wrote:
> On Thu, Oct 19, 2023 at 5:23 PM Alexander Ivanov
> <alexander.ivanov@virtuozzo.com> wrote:
>> We will need these functions in parallels-ext.c too. Let them be global
>> functions parallels_mark_used() and parallels_mark_unused().
>>
>> Signed-off-by: Alexander Ivanov <alexander.ivanov@virtuozzo.com>
>> ---
>> block/parallels.c | 22 ++++++++++++----------
>> block/parallels.h | 5 +++++
>> 2 files changed, 17 insertions(+), 10 deletions(-)
>>
>> diff --git a/block/parallels.c b/block/parallels.c
>> index a22ab7f2fc..2ee2b42038 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);
>> @@ -195,8 +195,8 @@ static int mark_used(BlockDriverState *bs, unsigned long *bitmap,
>> return 0;
>> }
>>
>> -static int mark_unused(BlockDriverState *bs, unsigned long *bitmap,
>> - uint32_t bitmap_size, int64_t off, uint32_t count)
>> +int parallels_mark_unused(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);
>> @@ -249,7 +249,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;
>> }
>> @@ -326,7 +327,8 @@ int64_t parallels_allocate_host_clusters(BlockDriverState *bs,
>> }
>> }
>>
>> - ret = mark_used(bs, s->used_bmap, s->used_bmap_size, host_off, *clusters);
>> + ret = parallels_mark_used(bs, s->used_bmap, s->used_bmap_size,
>> + host_off, *clusters);
>> if (ret < 0) {
>> /* Image consistency is broken. Alarm! */
>> return ret;
>> @@ -393,8 +395,8 @@ allocate_clusters(BlockDriverState *bs, int64_t sector_num,
>>
>> qemu_vfree(buf);
>> if (ret < 0) {
>> - mark_unused(bs, s->used_bmap, s->used_bmap_size,
>> - host_off, to_allocate);
>> + parallels_mark_unused(bs, s->used_bmap, s->used_bmap_size,
>> + host_off, to_allocate);
>> return ret;
>> }
>> }
>> @@ -868,7 +870,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;
>> @@ -928,7 +930,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 3e4f397502..4e7aa6b80f 100644
>> --- a/block/parallels.h
>> +++ b/block/parallels.h
>> @@ -90,6 +90,11 @@ 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_mark_unused(BlockDriverState *bs, unsigned long *bitmap,
>> + uint32_t bitmap_size, int64_t off, uint32_t count);
>> +
>> int64_t parallels_allocate_host_clusters(BlockDriverState *bs,
>> int64_t *clusters);
>>
>> --
>> 2.34.1
>>
>>
> Just a note: parallels_mark_unused() could be initially declared as
> global just because after patch 3/20 there can be compilation warning:
> warning: unused function 'mark_unused' [-Wunused-function]
> :)
>
> I do not have strong opinion about how to avoid such compilation
> warning in the middle of the patch series.
> The simplest and straightforward way is to declare this function as
> static in patch 4.
Will pay attention, thanks.
>
> I do not have any other objections for the series except misplaced
> NULL assignment.
>
> Regards,
> Mike.
--
Best regards,
Alexander Ivanov