On 29.08.2022 12:12, Alexander Ivanov wrote:
> Fix image inflation when offset in BAT is out of image.
>
> Replace whole BAT syncing by flushing only dirty blocks.
>
> Move all the checks outside the main check function in
> separate functions
>
> Use WITH_QEMU_LOCK_GUARD for simplier code.
>
> v7:
> 1,2: Fix string lengths in the commit messages.
> 3: Fix a typo in the commit message.
>
> v6:
> 1: Move the error check inside the loop. Move file size getting
> to the function beginning. Skip out-of-image offsets.
> 2: A new patch - don't let high_off be more than the end of the last cluster.
> 3: Set data_end without any condition.
> 7: Move data_end setting to parallels_check_outside_image().
> 8: Remove s->data_end setting from parallels_check_leak().
> Fix 'i' type.
>
> v5:
> 2: Change the way of data_end fixing.
> 6,7: Move data_end check to parallels_check_leak().
>
> v4:
> 1: Move s->data_end fix to parallels_co_check(). Split the check
> in parallels_open() and the fix in parallels_co_check() to two patches.
> 2: A new patch - a part of the patch 1.
> Add a fix for data_end to parallels_co_check().
> 3: Move offset convertation to parallels_set_bat_entry().
> 4: Fix 'ret' rewriting by bdrv_co_flush() results.
> 7: Keep 'i' as uint32_t.
>
> v3:
>
> 1-8: Fix commit message.
>
> v2:
>
> 2: A new patch - a part of the splitted patch 2.
> 3: Patch order was changed so the replacement is done in parallels_co_check.
> Now we use a helper to set BAT entry and mark the block dirty.
> 4: Revert the condition with s->header_unclean.
> 5: Move unrelated helper parallels_set_bat_entry creation to a separate patch.
> 7: Move fragmentation counting code to this function too.
> 8: Fix an incorrect usage of WITH_QEMU_LOCK_GUARD.
>
>
> Alexander Ivanov (10):
> parallels: Out of image offset in BAT leads to image inflation
> parallels: Fix high_off calculation in parallels_co_check()
> parallels: Fix data_end after out-of-image check
> parallels: create parallels_set_bat_entry_helper() to assign BAT value
> parallels: Use generic infrastructure for BAT writing in
> parallels_co_check()
> parallels: Move check of unclean image to a separate function
> parallels: Move check of cluster outside image to a separate function
> parallels: Move check of leaks to a separate function
> parallels: Move statistic collection to a separate function
> parallels: Replace qemu_co_mutex_lock by WITH_QEMU_LOCK_GUARD
>
> block/parallels.c | 193 +++++++++++++++++++++++++++++++++-------------
> 1 file changed, 138 insertions(+), 55 deletions(-)
>
queued, thanks