Patchwork [RFC,V8,23/24] qcow2: Enable the deduplication feature.

login
register
mail settings
Submitter Benoît Canet
Date June 20, 2013, 2:26 p.m.
Message ID <1371738392-9594-24-git-send-email-benoit@irqsave.net>
Download mbox | patch
Permalink /patch/253005/
State New
Headers show

Comments

Benoît Canet - June 20, 2013, 2:26 p.m.
---
 block/qcow2.c |   17 +++++++++++++++++
 1 file changed, 17 insertions(+)

Patch

diff --git a/block/qcow2.c b/block/qcow2.c
index f7b94dd..bb7bf74 100644
--- a/block/qcow2.c
+++ b/block/qcow2.c
@@ -569,6 +569,13 @@  static int qcow2_open(BlockDriverState *bs, QDict *options, int flags)
         goto fail;
     }
 
+    if (s->incompatible_features & QCOW2_INCOMPAT_DEDUP) {
+        ret = qcow2_dedup_init(bs);
+        if (ret < 0) {
+            goto fail;
+        }
+    }
+
 #ifdef DEBUG_ALLOC
     {
         BdrvCheckResult result = {0};
@@ -1043,8 +1050,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);
 
@@ -1547,6 +1559,11 @@  static int qcow2_create2(const char *filename, int64_t total_size,
         }
 
         qcow2_store_cleanup(&s->key_value_store);
+
+        ret = qcow2_dedup_init(bs);
+        if (ret < 0) {
+            goto out;
+        }
     }
 
     /* Want a backing file? There you go.*/