Patchwork [RFC,V7,32/32] qcow2: Enable the deduplication feature.

login
register
mail settings
Submitter Benoît Canet
Date March 15, 2013, 2:49 p.m.
Message ID <1363358986-8360-33-git-send-email-benoit@irqsave.net>
Download mbox | patch
Permalink /patch/228039/
State New
Headers show

Comments

Benoît Canet - March 15, 2013, 2:49 p.m.
---
 block/qcow2.c |   18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

Patch

diff --git a/block/qcow2.c b/block/qcow2.c
index 96fc86a..135c71e 100644
--- a/block/qcow2.c
+++ b/block/qcow2.c
@@ -531,6 +531,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};
@@ -1006,8 +1013,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);
 
@@ -1498,6 +1510,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.*/