Patchwork [RFC,V2,02/16] qcow2: Enable the deduplication feature.

login
register
mail settings
Submitter Benoît Canet
Date Feb. 6, 2013, 12:32 p.m.
Message ID <1360153939-9563-3-git-send-email-benoit@irqsave.net>
Download mbox | patch
Permalink /patch/218628/
State New
Headers show

Comments

Benoît Canet - Feb. 6, 2013, 12:32 p.m.
---
 block/qcow2.c |   18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

Patch

diff --git a/block/qcow2.c b/block/qcow2.c
index 9097e64..514811a 100644
--- a/block/qcow2.c
+++ b/block/qcow2.c
@@ -540,6 +540,13 @@  static int qcow2_open(BlockDriverState *bs, int flags)
         }
     }
 
+    if (s->incompatible_features & QCOW2_INCOMPAT_DEDUP) {
+        ret = qcow2_dedup_init(bs);
+        if (ret < 0) {
+            goto fail;
+        }
+    }
+
 #ifdef DEBUG_ALLOC
     {
         BdrvCheckResult result = {0};
@@ -1009,8 +1016,13 @@  fail:
 static void qcow2_close(BlockDriverState *bs)
 {
     BDRVQcowState *s = bs->opaque;
+
     g_free(s->l1_table);
 
+    if (s->has_dedup) {
+        qcow2_dedup_close(bs);
+    }
+
     qcow2_cache_flush(bs, s->l2_table_cache);
     qcow2_cache_flush(bs, s->refcount_block_cache);
 
@@ -1500,6 +1512,12 @@  static int qcow2_create2(const char *filename, int64_t total_size,
         if (ret < 0) {
             goto out;
         }
+
+        /* minimal init */
+        ret = qcow2_dedup_init(bs);
+        if (ret < 0) {
+            goto out;
+        }
     }
 
     /* Want a backing file? There you go.*/