Message ID | 20220829101246.343507-1-alexander.ivanov@virtuozzo.com (mailing list archive) |
---|---|
Headers | show |
Series | parallels: Refactor the code of images checks and fix a bug | expand |
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