-static int grub_fat_add_chunk(ventoy_img_chunk_list *chunk_list, grub_uint64_t sector, grub_uint64_t size, grub_uint32_t log_sector_size)
-{
- ventoy_img_chunk *last_chunk;
- ventoy_img_chunk *new_chunk;
-
- if (chunk_list->cur_chunk == 0)
- {
- chunk_list->chunk[0].img_start_sector = 0;
- chunk_list->chunk[0].img_end_sector = (size >> 11) - 1;
- chunk_list->chunk[0].disk_start_sector = sector;
- chunk_list->chunk[0].disk_end_sector = sector + (size >> log_sector_size) - 1;
- chunk_list->cur_chunk = 1;
- return 0;
- }
-
- last_chunk = chunk_list->chunk + chunk_list->cur_chunk - 1;
- if (last_chunk->disk_end_sector + 1 == sector)
- {
- last_chunk->img_end_sector += (size >> 11);
- last_chunk->disk_end_sector += (size >> log_sector_size);
- return 0;
- }
-
- if (chunk_list->cur_chunk == chunk_list->max_chunk)
- {
- new_chunk = grub_realloc(chunk_list->chunk, chunk_list->max_chunk * 2 * sizeof(ventoy_img_chunk));
- if (NULL == new_chunk)
- {
- return -1;
- }
- chunk_list->chunk = new_chunk;
- chunk_list->max_chunk *= 2;
-
- /* issue: update last_chunk */
- last_chunk = chunk_list->chunk + chunk_list->cur_chunk - 1;
- }
-
- new_chunk = chunk_list->chunk + chunk_list->cur_chunk;
- new_chunk->img_start_sector = last_chunk->img_end_sector + 1;
- new_chunk->img_end_sector = new_chunk->img_start_sector + (size >> 11) - 1;
- new_chunk->disk_start_sector = sector;
- new_chunk->disk_end_sector = sector + (size >> log_sector_size) - 1;
-
- chunk_list->cur_chunk++;
-
- return 0;
-}
-