Fix moving of the last block in vitastor-disk resize

This commit is contained in:
Vitaliy Filippov
2026-06-17 01:19:12 +03:00
parent 430d3cfb6f
commit 9c49315fdf
5 changed files with 91 additions and 3 deletions
+2 -1
View File
@@ -213,7 +213,8 @@ void disk_tool_t::resize_init(blockstore_meta_header_v3_t *hdr)
data_idx_diff = ((int64_t)(dsk.data_offset-new_data_offset))/((int64_t)dsk.data_block_size);
free_first = new_data_offset > dsk.data_offset ? (new_data_offset-dsk.data_offset) / dsk.data_block_size : 0;
free_last = (new_data_offset+new_data_len < dsk.data_offset+dsk.data_len)
? (dsk.data_offset+dsk.data_len-new_data_offset-new_data_len) / dsk.data_block_size
? ((dsk.data_offset-new_data_offset)/dsk.data_block_size +
dsk.data_len/dsk.data_block_size - new_data_len/dsk.data_block_size)
: 0;
uint32_t new_clean_entry_header_size = sizeof(clean_disk_entry) + 4 /*entry_csum*/;
new_clean_entry_bitmap_size = dsk.data_block_size / (hdr ? hdr->bitmap_granularity : 4096) / 8;