From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:50765) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TOW3I-0003Ce-Lc for qemu-devel@nongnu.org; Wed, 17 Oct 2012 12:01:08 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TOW33-0002os-Ex for qemu-devel@nongnu.org; Wed, 17 Oct 2012 12:00:54 -0400 Received: from nodalink.pck.nerim.net ([62.212.105.220]:48741 helo=paradis.irqsave.net) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TOW33-0002kK-1g for qemu-devel@nongnu.org; Wed, 17 Oct 2012 12:00:45 -0400 From: =?UTF-8?q?Beno=C3=AEt=20Canet?= Date: Wed, 17 Oct 2012 18:00:09 +0200 Message-Id: <1350489629-1838-1-git-send-email-benoit@irqsave.net> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: [Qemu-devel] [RFC V2 00/20] QCOW2 deduplication List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: kwolf@redhat.com, =?UTF-8?q?Beno=C3=AEt=20Canet?= , stefanha@redhat.com This patchset is a not yet working draft starting to implement deduplicat= ion in QCOW2. The Kernel red black trees are indented in kernel style. I'll be happy to know what is the policy regarding this kind of inclusion and what tools can be used to make the style compliant. I am posting this patchset in order to have an early feedback regarding t= he design. Beno=C3=AEt Canet (20): qcow2: Add deduplication to the qcow2 specification. qcow2: Add kernel red black trees qcow2: Add deduplication structures and fields. qcow2: Add qcow2_dedup_read_missing_and_concatenate qcow2: Rename update_refcount into qcow2_update_refcount. qcow2: Add qcow2_dedup and related functions. qcow2: Add qcow2_dedup_write_new_hashes. qcow2: Implement qcow2_compute_cluster_hash. qcow2: Add qcow2_co_load_dedup_hashes. qcow2: Add qcow2_dedup_grow_table. qcow2: Load and save deduplication table header extension. qcow2: Extract qcow2_do_table_init. qcow2: Add qcow2_dedup_init and qcow2_dedup_close. qcow2: Extract qcow2_add_feature and qcow2_remove_feature. block: Add dedup image create option. qcow2: Allow creation of images using deduplication. qcow2: Integrate deduplication in qcow2_co_writev loop. qcow2: Add method to destroy the deduplication red black tree. qcow2: init and cleanup deduplication. qemu-iotests: Filter dedup=3Don/off so existing tests don't break. Makefile | 3 + Makefile.objs | 1 + Makefile.target | 2 +- block/Makefile.objs | 1 + block/qcow2-cluster.c | 95 ++++-- block/qcow2-dedup.c | 774 ++++++++++++++++++++++++++++++++++++= ++++++ block/qcow2-refcount.c | 79 +++-- block/qcow2.c | 247 ++++++++++++-- block/qcow2.h | 72 +++- block_int.h | 1 + docs/specs/qcow2.txt | 16 +- rbtree.c | 389 +++++++++++++++++++++ rbtree.h | 160 +++++++++ tests/qemu-iotests/common.rc | 3 +- 14 files changed, 1749 insertions(+), 94 deletions(-) create mode 100644 block/qcow2-dedup.c create mode 100644 rbtree.c create mode 100644 rbtree.h --=20 1.7.10.4