Commits
Kirill Tkhai authored and Konstantin Khorenko committed dad342fde54
ploop: Fix huge grow with head clusters relocation In case of resize is huge, start of data clusters are relocated. This case we can relay on data_off_in_clusters(), so we should move all bits from new start bit to 0 (this would be a fix). But this is uncomfortable and make code complicated. So, we won't try to save 1 / (8 * 1024 * 1024) of bitmap size like we do now, and we will populate the bitmap with absolute numbers of bits (from start of file, not from start of data part). This patch reworks the bitmap and fixes the problem. The scheme of allocation during grow now is: 1)Clear all relocated clusters bits from bitmap before grow; 2)Use a bit from holes bitmap, if there is any available; 3)In case of there are no bits, write to end of file w/o modifications of holes bitmap; 4)Look at new alloc_head after grow and clear corresponding bits in new bitmap. https://jira.sw.ru/browse/PSBM-93243 Signed-off-by: Kirill Tkhai <ktkhai@virtuozzo.com>