Sophie

Sophie

distrib > Scientific%20Linux > 5x > x86_64 > media > main-src > by-pkgid > aadbe78a25743146bb784eee19f007c5 > files > 181

kvm-83-164.el5_5.9.src.rpm

From ac9847a1c541c1a4dc940fc2d1731af7b715d954 Mon Sep 17 00:00:00 2001
From: Uri Lublin <uril@redhat.com>
Date: Mon, 30 Mar 2009 23:15:47 +0300
Subject: [PATCH 06/12] Revert "block-qcow2: keep highest allocated byte (Uri Lublin)"

This reverts commit 9b7d02a5add2bb7c3477803ba8a7702a3f8057e1.

Was not accepted upstream. Using an alternative solution with
watermark and asynchronous notification.

Signed-off-by: Uri Lublin <uril@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Bugzilla: 489964
RH-Upstream-status: not-applicable
Acked-by: Eduardo Habkost <ehabkost@redhat.com>
Acked-by: Dor Laor <dlaor@redhat.com>
---
 qemu/block-qcow2.c |   34 ----------------------------------
 1 files changed, 0 insertions(+), 34 deletions(-)

diff --git a/qemu/block-qcow2.c b/qemu/block-qcow2.c
index 2431018..f91ca31 100644
--- a/qemu/block-qcow2.c
+++ b/qemu/block-qcow2.c
@@ -143,9 +143,6 @@ typedef struct BDRVQcowState {
     uint32_t crypt_method_header;
     AES_CBC_CIPHER aes_encrypt_cipher;
     AES_CBC_CIPHER aes_decrypt_cipher;
-
-    int64_t highest_alloc; /* highest cluester allocated (in clusters) */
-
     uint64_t snapshots_offset;
     int snapshots_size;
     int nb_snapshots;
@@ -173,8 +170,6 @@ static void free_clusters(BlockDriverState *bs,
 #ifdef DEBUG_ALLOC
 static void check_refcounts(BlockDriverState *bs);
 #endif
-static void scan_refcount(BlockDriverState *bs, int64_t *high);
-
 
 static int qcow_probe(const uint8_t *buf, int buf_size, const char *filename)
 {
@@ -283,8 +278,6 @@ static int qcow_open(BlockDriverState *bs, const char *filename, int flags)
     if (refcount_init(bs) < 0)
         goto fail;
 
-    scan_refcount(bs, &s->highest_alloc);
-
     /* read the backing file name */
     if (header.backing_file_offset != 0) {
         len = header.backing_file_size;
@@ -2216,29 +2209,6 @@ static int load_refcount_block(BlockDriverState *bs,
     return 0;
 }
 
-static void scan_refcount(BlockDriverState *bs, int64_t *high)
-{
-    BDRVQcowState *s = bs->opaque;
-    int64_t refcnt_index, cluster_index, cluster_end, h = 0;
-
-    for (refcnt_index=0; refcnt_index < s->refcount_table_size; refcnt_index++){
-        if (s->refcount_table[refcnt_index] == 0) {
-            continue;
-        }
-        cluster_index = refcnt_index << (s->cluster_bits - REFCOUNT_SHIFT);
-        cluster_end = (refcnt_index + 1) << (s->cluster_bits - REFCOUNT_SHIFT);
-        for ( ; cluster_index < cluster_end; cluster_index++) {
-            if (get_refcount(bs, cluster_index) == 0)
-                /* do nothing -- reserved for free counting */;
-            else
-                h = cluster_index;
-        }
-    }
-
-    if (high)
-        *high = (h+1);
-}
-
 static int get_refcount(BlockDriverState *bs, int64_t cluster_index)
 {
     BDRVQcowState *s = bs->opaque;
@@ -2279,10 +2249,6 @@ retry:
             size,
             (s->free_cluster_index - nb_clusters) << s->cluster_bits);
 #endif
-
-    if (s->highest_alloc < s->free_cluster_index)
-        s->highest_alloc = s->free_cluster_index;
-
     return (s->free_cluster_index - nb_clusters) << s->cluster_bits;
 }
 
-- 
1.6.1