Lines Matching full:header

34  * header).
39 * The code is not thread safe (missing locks for changes in header and
117 /* Innotek / SUN images use these strings in header.text:
186 /* VDI header (converted to host endianness). */
187 VdiHeader header; member
194 static void vdi_header_to_cpu(VdiHeader *header) in vdi_header_to_cpu() argument
196 header->signature = le32_to_cpu(header->signature); in vdi_header_to_cpu()
197 header->version = le32_to_cpu(header->version); in vdi_header_to_cpu()
198 header->header_size = le32_to_cpu(header->header_size); in vdi_header_to_cpu()
199 header->image_type = le32_to_cpu(header->image_type); in vdi_header_to_cpu()
200 header->image_flags = le32_to_cpu(header->image_flags); in vdi_header_to_cpu()
201 header->offset_bmap = le32_to_cpu(header->offset_bmap); in vdi_header_to_cpu()
202 header->offset_data = le32_to_cpu(header->offset_data); in vdi_header_to_cpu()
203 header->cylinders = le32_to_cpu(header->cylinders); in vdi_header_to_cpu()
204 header->heads = le32_to_cpu(header->heads); in vdi_header_to_cpu()
205 header->sectors = le32_to_cpu(header->sectors); in vdi_header_to_cpu()
206 header->sector_size = le32_to_cpu(header->sector_size); in vdi_header_to_cpu()
207 header->disk_size = le64_to_cpu(header->disk_size); in vdi_header_to_cpu()
208 header->block_size = le32_to_cpu(header->block_size); in vdi_header_to_cpu()
209 header->block_extra = le32_to_cpu(header->block_extra); in vdi_header_to_cpu()
210 header->blocks_in_image = le32_to_cpu(header->blocks_in_image); in vdi_header_to_cpu()
211 header->blocks_allocated = le32_to_cpu(header->blocks_allocated); in vdi_header_to_cpu()
212 header->uuid_image = qemu_uuid_bswap(header->uuid_image); in vdi_header_to_cpu()
213 header->uuid_last_snap = qemu_uuid_bswap(header->uuid_last_snap); in vdi_header_to_cpu()
214 header->uuid_link = qemu_uuid_bswap(header->uuid_link); in vdi_header_to_cpu()
215 header->uuid_parent = qemu_uuid_bswap(header->uuid_parent); in vdi_header_to_cpu()
218 static void vdi_header_to_le(VdiHeader *header) in vdi_header_to_le() argument
220 header->signature = cpu_to_le32(header->signature); in vdi_header_to_le()
221 header->version = cpu_to_le32(header->version); in vdi_header_to_le()
222 header->header_size = cpu_to_le32(header->header_size); in vdi_header_to_le()
223 header->image_type = cpu_to_le32(header->image_type); in vdi_header_to_le()
224 header->image_flags = cpu_to_le32(header->image_flags); in vdi_header_to_le()
225 header->offset_bmap = cpu_to_le32(header->offset_bmap); in vdi_header_to_le()
226 header->offset_data = cpu_to_le32(header->offset_data); in vdi_header_to_le()
227 header->cylinders = cpu_to_le32(header->cylinders); in vdi_header_to_le()
228 header->heads = cpu_to_le32(header->heads); in vdi_header_to_le()
229 header->sectors = cpu_to_le32(header->sectors); in vdi_header_to_le()
230 header->sector_size = cpu_to_le32(header->sector_size); in vdi_header_to_le()
231 header->disk_size = cpu_to_le64(header->disk_size); in vdi_header_to_le()
232 header->block_size = cpu_to_le32(header->block_size); in vdi_header_to_le()
233 header->block_extra = cpu_to_le32(header->block_extra); in vdi_header_to_le()
234 header->blocks_in_image = cpu_to_le32(header->blocks_in_image); in vdi_header_to_le()
235 header->blocks_allocated = cpu_to_le32(header->blocks_allocated); in vdi_header_to_le()
236 header->uuid_image = qemu_uuid_bswap(header->uuid_image); in vdi_header_to_le()
237 header->uuid_last_snap = qemu_uuid_bswap(header->uuid_last_snap); in vdi_header_to_le()
238 header->uuid_link = qemu_uuid_bswap(header->uuid_link); in vdi_header_to_le()
239 header->uuid_parent = qemu_uuid_bswap(header->uuid_parent); in vdi_header_to_le()
242 static void vdi_header_print(VdiHeader *header) in vdi_header_print() argument
246 logout("text %s", header->text); in vdi_header_print()
247 logout("signature 0x%08x\n", header->signature); in vdi_header_print()
248 logout("header size 0x%04x\n", header->header_size); in vdi_header_print()
249 logout("image type 0x%04x\n", header->image_type); in vdi_header_print()
250 logout("image flags 0x%04x\n", header->image_flags); in vdi_header_print()
251 logout("description %s\n", header->description); in vdi_header_print()
252 logout("offset bmap 0x%04x\n", header->offset_bmap); in vdi_header_print()
253 logout("offset data 0x%04x\n", header->offset_data); in vdi_header_print()
254 logout("cylinders 0x%04x\n", header->cylinders); in vdi_header_print()
255 logout("heads 0x%04x\n", header->heads); in vdi_header_print()
256 logout("sectors 0x%04x\n", header->sectors); in vdi_header_print()
257 logout("sector size 0x%04x\n", header->sector_size); in vdi_header_print()
259 header->disk_size, header->disk_size / MiB); in vdi_header_print()
260 logout("block size 0x%04x\n", header->block_size); in vdi_header_print()
261 logout("block extra 0x%04x\n", header->block_extra); in vdi_header_print()
262 logout("blocks tot. 0x%04x\n", header->blocks_in_image); in vdi_header_print()
263 logout("blocks all. 0x%04x\n", header->blocks_allocated); in vdi_header_print()
264 uuid = header->uuid_image; in vdi_header_print()
267 uuid = header->uuid_last_snap; in vdi_header_print()
270 uuid = header->uuid_link; in vdi_header_print()
273 uuid = header->uuid_parent; in vdi_header_print()
292 bmap = g_try_new(uint32_t, s->header.blocks_in_image); in vdi_co_check()
293 if (s->header.blocks_in_image && bmap == NULL) { in vdi_co_check()
298 memset(bmap, 0xff, s->header.blocks_in_image * sizeof(uint32_t)); in vdi_co_check()
301 for (block = 0; block < s->header.blocks_in_image; block++) { in vdi_co_check()
304 if (bmap_entry < s->header.blocks_in_image) { in vdi_co_check()
320 if (blocks_allocated != s->header.blocks_allocated) { in vdi_co_check()
323 blocks_allocated, s->header.blocks_allocated); in vdi_co_check()
354 const VdiHeader *header = (const VdiHeader *)buf; in vdi_probe() local
359 if (buf_size < sizeof(*header)) { in vdi_probe()
360 /* Header too small, no VDI. */ in vdi_probe()
361 } else if (le32_to_cpu(header->signature) == VDI_SIGNATURE) { in vdi_probe()
368 logout("%s", header->text); in vdi_probe()
378 VdiHeader header; in vdi_open() local
392 ret = bdrv_pread(bs->file, 0, sizeof(header), &header, 0); in vdi_open()
397 vdi_header_to_cpu(&header); in vdi_open()
399 vdi_header_print(&header); in vdi_open()
402 if (header.disk_size > VDI_DISK_SIZE_MAX) { in vdi_open()
405 header.disk_size, VDI_DISK_SIZE_MAX); in vdi_open()
410 uuid_link = header.uuid_link; in vdi_open()
411 uuid_parent = header.uuid_parent; in vdi_open()
413 if (header.disk_size % SECTOR_SIZE != 0) { in vdi_open()
417 logout("odd disk size %" PRIu64 " B, round up\n", header.disk_size); in vdi_open()
418 header.disk_size = ROUND_UP(header.disk_size, SECTOR_SIZE); in vdi_open()
421 if (header.signature != VDI_SIGNATURE) { in vdi_open()
423 ")", header.signature); in vdi_open()
426 } else if (header.version != VDI_VERSION_1_1) { in vdi_open()
428 ")", header.version >> 16, header.version & 0xffff); in vdi_open()
431 } else if (header.offset_bmap % SECTOR_SIZE != 0) { in vdi_open()
434 "0x%" PRIx32 ")", header.offset_bmap); in vdi_open()
437 } else if (header.offset_data % SECTOR_SIZE != 0) { in vdi_open()
440 PRIx32 ")", header.offset_data); in vdi_open()
443 } else if (header.sector_size != SECTOR_SIZE) { in vdi_open()
445 " is not %llu)", header.sector_size, SECTOR_SIZE); in vdi_open()
448 } else if (header.block_size != DEFAULT_CLUSTER_SIZE) { in vdi_open()
451 header.block_size, DEFAULT_CLUSTER_SIZE); in vdi_open()
454 } else if (header.disk_size > in vdi_open()
455 (uint64_t)header.blocks_in_image * header.block_size) { in vdi_open()
458 header.disk_size, in vdi_open()
459 (uint64_t)header.blocks_in_image * header.block_size); in vdi_open()
470 } else if (header.blocks_in_image > VDI_BLOCKS_IN_IMAGE_MAX) { in vdi_open()
473 header.blocks_in_image, VDI_BLOCKS_IN_IMAGE_MAX); in vdi_open()
478 bs->total_sectors = header.disk_size / SECTOR_SIZE; in vdi_open()
480 s->block_size = header.block_size; in vdi_open()
481 s->bmap_sector = header.offset_bmap / SECTOR_SIZE; in vdi_open()
482 s->header = header; in vdi_open()
484 bmap_size = header.blocks_in_image * sizeof(uint32_t); in vdi_open()
492 ret = bdrv_pread(bs->file, header.offset_bmap, bmap_size * SECTOR_SIZE, in vdi_open()
543 *map = s->header.offset_data + (uint64_t)bmap_entry * s->block_size + in vdi_co_block_status()
547 (s->header.image_type == VDI_TYPE_STATIC ? BDRV_BLOCK_RECURSE : 0); in vdi_co_block_status()
584 uint64_t data_offset = s->header.offset_data + in vdi_co_preadv()
648 bmap_entry = s->header.blocks_allocated; in vdi_co_pwritev()
650 s->header.blocks_allocated++; in vdi_co_pwritev()
651 data_offset = s->header.offset_data + in vdi_co_pwritev()
674 data_offset = s->header.offset_data + in vdi_co_pwritev()
703 VdiHeader *header; in vdi_co_pwritev() local
709 header = g_malloc(sizeof(*header)); in vdi_co_pwritev()
711 logout("now writing modified header\n"); in vdi_co_pwritev()
713 *header = s->header; in vdi_co_pwritev()
714 vdi_header_to_le(header); in vdi_co_pwritev()
715 ret = bdrv_co_pwrite(bs->file, 0, sizeof(*header), header, 0); in vdi_co_pwritev()
716 g_free(header); in vdi_co_pwritev()
749 VdiHeader header; in vdi_co_do_create() local
829 memset(&header, 0, sizeof(header)); in vdi_co_do_create()
830 pstrcpy(header.text, sizeof(header.text), VDI_TEXT); in vdi_co_do_create()
831 header.signature = VDI_SIGNATURE; in vdi_co_do_create()
832 header.version = VDI_VERSION_1_1; in vdi_co_do_create()
833 header.header_size = 0x180; in vdi_co_do_create()
834 header.image_type = image_type; in vdi_co_do_create()
835 header.offset_bmap = 0x200; in vdi_co_do_create()
836 header.offset_data = 0x200 + bmap_size; in vdi_co_do_create()
837 header.sector_size = SECTOR_SIZE; in vdi_co_do_create()
838 header.disk_size = bytes; in vdi_co_do_create()
839 header.block_size = block_size; in vdi_co_do_create()
840 header.blocks_in_image = blocks; in vdi_co_do_create()
842 header.blocks_allocated = blocks; in vdi_co_do_create()
845 header.uuid_image = uuid; in vdi_co_do_create()
847 header.uuid_last_snap = uuid; in vdi_co_do_create()
848 /* There is no need to set header.uuid_link or header.uuid_parent here. */ in vdi_co_do_create()
850 vdi_header_print(&header); in vdi_co_do_create()
852 vdi_header_to_le(&header); in vdi_co_do_create()
853 ret = blk_co_pwrite(blk, offset, sizeof(header), &header, 0); in vdi_co_do_create()
855 error_setg(errp, "Error writing header"); in vdi_co_do_create()
858 offset += sizeof(header); in vdi_co_do_create()
999 if (s->header.image_type == VDI_TYPE_STATIC) { in vdi_has_zero_init()