Features/QED: Difference between revisions

From QEMU
Line 22: Line 22:


==Extent table==
==Extent table==
#define TABLE_NOFFSETS (table_size * chunk_size / sizeof(uint64_t))
 
Table {
    uint64_t offsets[TABLE_NOFFSETS];
}
The extent tables are organized as follows:
                    +----------+
                    | L1 table |
                    +----------+
              ,------'  |  '------.
          +----------+  |    +----------+
          | L2 table |  ...  | L2 table |
          +----------+        +----------+
      ,------'  |  '------.
+----------+  |    +----------+
|  Data  |  ...  |  Data  |
+----------+        +----------+


=Operations=
=Operations=

Revision as of 15:32, 24 August 2010

Specification

The file format looks like this:

+--------+--------------+---------+---------+-----+
| header | extent table | extent0 | extent1 | ... |
+--------+--------------+---------+---------+-----+

Header

Header {
    uint32_t magic;               /* COW2 */
    uint32_t features;            /* format feature bits */

    uint32_t cluster_size;        /* in bytes */
    uint32_t table_size;          /* table chunk size, in clusters */
    uint64_t l1_table_offset;     /* L1 table offset, in cluster */
    uint64_t image_size;          /* total image size, in clusters */

    uint32_t backing_file_offset; /* in bytes from start of header */
    uint32_t backing_file_size;   /* in bytes */
}

Extent table

#define TABLE_NOFFSETS (table_size * chunk_size / sizeof(uint64_t))
 
Table {
    uint64_t offsets[TABLE_NOFFSETS];
}

The extent tables are organized as follows:

                   +----------+
                   | L1 table |
                   +----------+
              ,------'  |  '------.
         +----------+   |    +----------+
         | L2 table |  ...   | L2 table |
         +----------+        +----------+
     ,------'  |  '------.
+----------+   |    +----------+
|   Data   |  ...   |   Data   |
+----------+        +----------+

Operations