qemu-bridge-helper$(EXESUF): qemu-bridge-helper.o
-Index: new/docs/specs/vma_spec.txt
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ new/docs/specs/vma_spec.txt 2013-12-05 08:14:11.000000000 +0100
-@@ -0,0 +1,132 @@
-+= Virtual Machine Archive format (VMA) =
-+
-+This format contains a header which includes the VM configuration as
-+binary blobs, and a list of devices (dev_id, name).
-+
-+The actual VM image data is stored inside extents. An extent contains
-+up to 64 clusters, and start with a 512 byte header containing
-+additional information for those clusters.
-+
-+We use a cluster size of 65536, and use 8 bytes for each
-+cluster in the header to store the following information:
-+
-+* 1 byte dev_id (to identity the drive)
-+* 1 byte not used (reserved)
-+* 2 bytes zero indicator (mark zero regions (16x4096))
-+* 4 bytes cluster number
-+
-+We only store non-zero blocks (such block is 4096 bytes).
-+
-+Each archive is marked with a uuid. The archive header and all
-+extent headers includes that uuid and a MD5 checksum (over header
-+data).
-+
-+All numbers in VMA archive are stored in Big Endian byte order.
-+
-+== VMA Header ==
-+
-+ Byte 0 - 3: magic
-+ VMA magic string ("VMA\x00")
-+
-+ 4 - 7: version
-+ Version number (valid value is 1)
-+
-+ 8 - 23: uuid
-+ Unique ID, Same uuid is used to mark extents.
-+
-+ 24 - 31: ctime
-+ Backup time stamp (seconds since epoch)
-+
-+ 32 - 47: md5sum
-+ Header checksum (from byte 0 to header_size). This field
-+ is filled with zero to generate the checksum.
-+
-+ 48 - 51: blob_buffer_offset
-+ Start of blob buffer (multiple of 512)
-+
-+ 52 - 55: blob_buffer_size
-+ Size of blob buffer (multiple of 512)
-+
-+ 56 - 59: header_size
-+ Overall size of this header (multiple of 512)
-+
-+ 60 - 2043: reserved
-+
-+ 2044 - 3067: uint32_t config_names[256]
-+ Offsets into blob_buffer table
-+
-+ 3068 - 4091: uint32_t config_data[256]
-+ Offsets into blob_buffer table
-+
-+ 4092 - 4095: reserved
-+
-+ 4096 - 12287: VmaDeviceInfoHeader dev_info[256]
-+ The offset in this table is used as 'dev_id' inside
-+ the data streams.
-+
-+ 12288 - header_size: Blob buffer
-+
-+
-+=== Devive Info Header (VmaDeviceInfoHeader) ===
-+
-+This is use to store details about the contained disk images.
-+
-+ Byte 0 - 3: devive name (offsets into blob_buffer table)
-+
-+ 4 - 7: reserved
-+
-+ 8 - 15: device size in bytes
-+
-+ 16 - 31: reserved
-+
-+Note: Devive name 'vmstate' is reserved to store VM RAM state.
-+
-+=== Blob buffer ===
-+
-+The blob buffer is used to store both configuration file names and
-+configuration data.
-+
-+This region contain a list of binary data blobs. Each blob starts with
-+a 2 byte size field, followed by the actual data.
-+
-+== Image Data Streams ==
-+
-+The VMA header is followed by the image data stream. Image data is grouped
-+with extents, which contains up to 59 clusters from different images.
-+
-+=== VMA Extent Header ===
-+
-+ Byte 0 - 3: magic
-+ VMA extent magic string ("VMAE")
-+
-+ 4 - 5: reserved
-+
-+ 6 - 7: block_count
-+ Overall number of contained 4K block
-+
-+ 8 - 23: uuid
-+ Unique ID, Same uuid as used in the VMA header.
-+
-+ 24 - 39: md5sum
-+ Header checksum (from byte 0 to header_size). This field
-+ is filled with zero to generate the checksum.
-+
-+ 40 - 511: blockinfo[59]
-+
-+
-+Each 'blockinfo' (8 bytes) give further details about contained clusters:
-+
-+ Byte 0 - 1: mask
-+ Bitmap used to indicate non-zero 4K blocks inside the
-+ cluster.
-+
-+ 2: reserved
-+
-+ 3: dev_id
-+ Device ID (offset into dev_info table)
-+
-+ 4 - 7: cluster_num
-+
-+The extend header if followed by the actual cluster data, where we only
-+store non-zero 4K blocks.
-+
Index: new/vma-reader.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
--- /dev/null
+= Virtual Machine Archive format (VMA) =
+
+This format contains a header which includes the VM configuration as
+binary blobs, and a list of devices (dev_id, name).
+
+The actual VM image data is stored inside extents. An extent contains
+up to 64 clusters, and start with a 512 byte header containing
+additional information for those clusters.
+
+We use a cluster size of 65536, and use 8 bytes for each
+cluster in the header to store the following information:
+
+* 1 byte dev_id (to identity the drive)
+* 1 byte not used (reserved)
+* 2 bytes zero indicator (mark zero regions (16x4096))
+* 4 bytes cluster number
+
+We only store non-zero blocks (such block is 4096 bytes).
+
+Each archive is marked with a uuid. The archive header and all
+extent headers includes that uuid and a MD5 checksum (over header
+data).
+
+All numbers in VMA archive are stored in Big Endian byte order.
+
+== VMA Header ==
+
+ Byte 0 - 3: magic
+ VMA magic string ("VMA\x00")
+
+ 4 - 7: version
+ Version number (valid value is 1)
+
+ 8 - 23: uuid
+ Unique ID, Same uuid is used to mark extents.
+
+ 24 - 31: ctime
+ Backup time stamp (seconds since epoch)
+
+ 32 - 47: md5sum
+ Header checksum (from byte 0 to header_size). This field
+ is filled with zero to generate the checksum.
+
+ 48 - 51: blob_buffer_offset
+ Start of blob buffer (multiple of 512)
+
+ 52 - 55: blob_buffer_size
+ Size of blob buffer (multiple of 512)
+
+ 56 - 59: header_size
+ Overall size of this header (multiple of 512)
+
+ 60 - 2043: reserved
+
+ 2044 - 3067: uint32_t config_names[256]
+ Offsets into blob_buffer table
+
+ 3068 - 4091: uint32_t config_data[256]
+ Offsets into blob_buffer table
+
+ 4092 - 4095: reserved
+
+ 4096 - 12287: VmaDeviceInfoHeader dev_info[256]
+ The offset in this table is used as 'dev_id' inside
+ the data streams.
+
+ 12288 - header_size: Blob buffer
+
+
+=== Devive Info Header (VmaDeviceInfoHeader) ===
+
+This is use to store details about the contained disk images.
+
+ Byte 0 - 3: devive name (offsets into blob_buffer table)
+
+ 4 - 7: reserved
+
+ 8 - 15: device size in bytes
+
+ 16 - 31: reserved
+
+Note: Devive name 'vmstate' is reserved to store VM RAM state.
+
+=== Blob buffer ===
+
+The blob buffer is used to store both configuration file names and
+configuration data.
+
+This region contain a list of binary data blobs. Each blob starts with
+a 2 byte size field, followed by the actual data.
+
+== Image Data Streams ==
+
+The VMA header is followed by the image data stream. Image data is grouped
+with extents, which contains up to 59 clusters from different images.
+
+=== VMA Extent Header ===
+
+ Byte 0 - 3: magic
+ VMA extent magic string ("VMAE")
+
+ 4 - 5: reserved
+
+ 6 - 7: block_count
+ Overall number of contained 4K block
+
+ 8 - 23: uuid
+ Unique ID, Same uuid as used in the VMA header.
+
+ 24 - 39: md5sum
+ Header checksum (from byte 0 to header_size). This field
+ is filled with zero to generate the checksum.
+
+ 40 - 511: blockinfo[59]
+
+
+Each 'blockinfo' (8 bytes) give further details about contained clusters:
+
+ Byte 0 - 1: mask
+ Bitmap used to indicate non-zero 4K blocks inside the
+ cluster.
+
+ 2: reserved
+
+ 3: dev_id
+ Device ID (offset into dev_info table)
+
+ 4 - 7: cluster_num
+
+The extend header if followed by the actual cluster data, where we only
+store non-zero 4K blocks.
+