[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RFC V3 01/24] qcow2: Add deduplication to the qcow2 specif
From: |
Benoît Canet |
Subject: |
[Qemu-devel] [RFC V3 01/24] qcow2: Add deduplication to the qcow2 specification. |
Date: |
Mon, 26 Nov 2012 14:05:00 +0100 |
Signed-off-by: Benoit Canet <address@hidden>
---
docs/specs/qcow2.txt | 33 ++++++++++++++++++++++++++++++++-
1 file changed, 32 insertions(+), 1 deletion(-)
diff --git a/docs/specs/qcow2.txt b/docs/specs/qcow2.txt
index 36a559d..16eafd7 100644
--- a/docs/specs/qcow2.txt
+++ b/docs/specs/qcow2.txt
@@ -80,7 +80,10 @@ in the description of a field.
tables to repair refcounts before accessing the
image.
- Bits 1-63: Reserved (set to 0)
+ Bit 1: Deduplication bit. If this bit is set then
+ deduplication is used on this image.
+
+ Bits 2-63: Reserved (set to 0)
80 - 87: compatible_features
Bitmask of compatible features. An implementation can
@@ -116,6 +119,7 @@ be stored. Each extension has a structure like the
following:
0x00000000 - End of the header extension area
0xE2792ACA - Backing file format name
0x6803f857 - Feature name table
+ 0xCD8E819B - Deduplication
other - Unknown header extension, can be safely
ignored
@@ -159,6 +163,33 @@ the header extension data. Each entry look like this:
terminated if it has full length)
+== Deduplication ==
+
+The deduplication extension contains the offset and size of the deduplication
+table.
+
+ Byte 0 - 7: Offset
+
+ 8 - 11: Size
+
+== Deduplication table ==
+
+The deduplication table contains 64 bits offsets to the level 2 deduplication
+table clusters.
+Each entry of these clusters contains a 32 bytes SHA256 hash followed by the
+64 bits logical offset of the first encountered block having this hash.
+
+Entries in the deduplication table are orderered by physical cluster index.
+
+The number of entries in an l2 deduplication table cluster is :
+l2_dedup_cluster_entries = cluster_size / (32 + 8)
+
+The index in the level 1 deduplication table is :
+l1_dedup_index = physical_cluster_index / l2_dedup_cluster_entries
+
+The index in the level 2 deduplication table is:
+l2_dedup_index = physical_cluster_index % l2_dedup_cluster_entries
+
== Host cluster management ==
qcow2 manages the allocation of host clusters by maintaining a reference count
--
1.7.10.4
- [Qemu-devel] [RFC V3 00/24] QCOW2 deduplication, Benoît Canet, 2012/11/26
- [Qemu-devel] [RFC V3 02/24] qcow2: Add deduplication structures and fields., Benoît Canet, 2012/11/26
- [Qemu-devel] [RFC V3 01/24] qcow2: Add deduplication to the qcow2 specification.,
Benoît Canet <=
- [Qemu-devel] [RFC V3 04/24] qcow2: Make update_cluster_refcount public., Benoît Canet, 2012/11/26
- [Qemu-devel] [RFC V3 05/24] qcow2: Create a way to link to l2 tables in dedup., Benoît Canet, 2012/11/26
- [Qemu-devel] [RFC V3 03/24] qcow2: Add qcow2_de dup_read_missing_and_concatenate, Benoît Canet, 2012/11/26
- [Qemu-devel] [RFC V3 06/24] qcow2: Add qcow2_dedup and related functions., Benoît Canet, 2012/11/26
- [Qemu-devel] [RFC V3 09/24] qcow2: Extract qcow2_dedup_grow_table, Benoît Canet, 2012/11/26
- [Qemu-devel] [RFC V3 13/24] qcow2: Add qcow2_dedup_init and qcow2_dedup_close., Benoît Canet, 2012/11/26
- [Qemu-devel] [RFC V3 12/24] qcow2: Extract qcow2_do_table_init., Benoît Canet, 2012/11/26
- [Qemu-devel] [RFC V3 11/24] qcow2: Load and save deduplication table header extension., Benoît Canet, 2012/11/26
- [Qemu-devel] [RFC V3 14/24] qcow2: Extract qcow2_add_feature and qcow2_remove_feature., Benoît Canet, 2012/11/26
- [Qemu-devel] [RFC V3 16/24] qcow2: Allow creation of images using deduplication., Benoît Canet, 2012/11/26