Lines Matching refs:footer
139 VHDFooter footer; member
246 static bool vpc_ignore_current_size(VHDFooter *footer) in vpc_ignore_current_size() argument
248 return !strncmp(footer->creator_app, "vpc ", 4) || in vpc_ignore_current_size()
249 !strncmp(footer->creator_app, "qemu", 4); in vpc_ignore_current_size()
257 VHDFooter *footer; in vpc_open() local
289 ret = bdrv_pread(bs->file, 0, sizeof(s->footer), &s->footer, 0); in vpc_open()
295 footer = &s->footer; in vpc_open()
296 if (strncmp(footer->creator, "conectix", 8)) { in vpc_open()
302 } else if (offset < sizeof(*footer)) { in vpc_open()
309 ret = bdrv_pread(bs->file, offset - sizeof(*footer), sizeof(*footer), in vpc_open()
310 footer, 0); in vpc_open()
314 if (strncmp(footer->creator, "conectix", 8) || in vpc_open()
315 be32_to_cpu(footer->type) != VHD_FIXED) { in vpc_open()
323 checksum = be32_to_cpu(footer->checksum); in vpc_open()
324 footer->checksum = 0; in vpc_open()
325 if (vpc_checksum(footer, sizeof(*footer)) != checksum) { in vpc_open()
332 footer->checksum = cpu_to_be32(checksum); in vpc_open()
338 be16_to_cpu(footer->cyls) * footer->heads * footer->secs_per_cyl; in vpc_open()
341 use_chs = vpc_ignore_current_size(footer) || s->force_use_chs; in vpc_open()
344 bs->total_sectors = be64_to_cpu(footer->current_size) / in vpc_open()
355 ret = bdrv_pread(bs->file, be64_to_cpu(footer->data_offset), in vpc_open()
547 ret = bdrv_co_pwrite_sync(bs->file, offset, sizeof(s->footer), &s->footer, 0); in rewrite_footer()
613 if (be32_to_cpu(s->footer.type) != VHD_FIXED) { in vpc_co_get_info()
631 if (be32_to_cpu(s->footer.type) == VHD_FIXED) { in vpc_co_preadv()
681 if (be32_to_cpu(s->footer.type) == VHD_FIXED) { in vpc_co_pwritev()
740 if (be32_to_cpu(s->footer.type) == VHD_FIXED) { in vpc_co_block_status()
830 static int coroutine_fn create_dynamic_disk(BlockBackend *blk, VHDFooter *footer, in create_dynamic_disk() argument
844 ret = blk_co_pwrite(blk, offset, sizeof(*footer), footer, 0); in create_dynamic_disk()
850 ret = blk_co_pwrite(blk, offset, sizeof(*footer), footer, 0); in create_dynamic_disk()
898 static int coroutine_fn create_fixed_disk(BlockBackend *blk, VHDFooter *footer, in create_fixed_disk() argument
904 total_size += sizeof(*footer); in create_fixed_disk()
911 ret = blk_co_pwrite(blk, total_size - sizeof(*footer), sizeof(*footer), in create_fixed_disk()
912 footer, 0); in create_fixed_disk()
984 VHDFooter footer; in vpc_co_create() local
1047 memset(&footer, 0, sizeof(footer)); in vpc_co_create()
1049 memcpy(footer.creator, "conectix", 8); in vpc_co_create()
1051 memcpy(footer.creator_app, "qem2", 4); in vpc_co_create()
1053 memcpy(footer.creator_app, "qemu", 4); in vpc_co_create()
1055 memcpy(footer.creator_os, "Wi2k", 4); in vpc_co_create()
1057 footer.features = cpu_to_be32(0x02); in vpc_co_create()
1058 footer.version = cpu_to_be32(0x00010000); in vpc_co_create()
1060 footer.data_offset = cpu_to_be64(sizeof(footer)); in vpc_co_create()
1062 footer.data_offset = cpu_to_be64(0xFFFFFFFFFFFFFFFFULL); in vpc_co_create()
1064 footer.timestamp = cpu_to_be32(time(NULL) - VHD_TIMESTAMP_BASE); in vpc_co_create()
1067 footer.major = cpu_to_be16(0x0005); in vpc_co_create()
1068 footer.minor = cpu_to_be16(0x0003); in vpc_co_create()
1069 footer.orig_size = cpu_to_be64(total_size); in vpc_co_create()
1070 footer.current_size = cpu_to_be64(total_size); in vpc_co_create()
1071 footer.cyls = cpu_to_be16(cyls); in vpc_co_create()
1072 footer.heads = heads; in vpc_co_create()
1073 footer.secs_per_cyl = secs_per_cyl; in vpc_co_create()
1075 footer.type = cpu_to_be32(disk_type); in vpc_co_create()
1078 footer.uuid = uuid; in vpc_co_create()
1080 footer.checksum = cpu_to_be32(vpc_checksum(&footer, sizeof(footer))); in vpc_co_create()
1083 ret = create_dynamic_disk(blk, &footer, total_sectors); in vpc_co_create()
1088 ret = create_fixed_disk(blk, &footer, total_size, errp); in vpc_co_create()
1182 if (be32_to_cpu(s->footer.type) == VHD_FIXED) { in vpc_has_zero_init()