Blame SOURCES/kvm-bloc-qcow2-drop-dirty_bitmaps_loaded-state-variable.patch

ae23c9
From 9672f88c8747e874efb9d8d6f67b8d4d8c474779 Mon Sep 17 00:00:00 2001
ae23c9
From: John Snow <jsnow@redhat.com>
ae23c9
Date: Tue, 20 Nov 2018 18:18:25 +0000
ae23c9
Subject: [PATCH 31/35] bloc/qcow2: drop dirty_bitmaps_loaded state variable
ae23c9
ae23c9
RH-Author: John Snow <jsnow@redhat.com>
ae23c9
Message-id: <20181120181828.15132-22-jsnow@redhat.com>
ae23c9
Patchwork-id: 83067
ae23c9
O-Subject: [RHEL8/rhel qemu-kvm PATCH 21/24] bloc/qcow2: drop dirty_bitmaps_loaded state variable
ae23c9
Bugzilla: 1518989
ae23c9
RH-Acked-by: Laurent Vivier <lvivier@redhat.com>
ae23c9
RH-Acked-by: Max Reitz <mreitz@redhat.com>
ae23c9
RH-Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
ae23c9
ae23c9
From: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
ae23c9
ae23c9
This variable doesn't work as it should, because it is actually cleared
ae23c9
in qcow2_co_invalidate_cache() by memset(). Drop it, as the following
ae23c9
patch will introduce new behavior.
ae23c9
ae23c9
Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
ae23c9
Reviewed-by: John Snow <jsnow@redhat.com>
ae23c9
Signed-off-by: John Snow <jsnow@redhat.com>
ae23c9
(cherry picked from commit 2ea427effff61efa5d0dc69f9cae126d13879617)
ae23c9
Signed-off-by: John Snow <jsnow@redhat.com>
ae23c9
Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com>
ae23c9
---
ae23c9
 block/qcow2.c | 19 ++-----------------
ae23c9
 block/qcow2.h |  1 -
ae23c9
 2 files changed, 2 insertions(+), 18 deletions(-)
ae23c9
ae23c9
diff --git a/block/qcow2.c b/block/qcow2.c
ae23c9
index 5c5530d..d260cd6 100644
ae23c9
--- a/block/qcow2.c
ae23c9
+++ b/block/qcow2.c
ae23c9
@@ -1149,7 +1149,6 @@ static int coroutine_fn qcow2_do_open(BlockDriverState *bs, QDict *options,
ae23c9
     uint64_t ext_end;
ae23c9
     uint64_t l1_vm_state_index;
ae23c9
     bool update_header = false;
ae23c9
-    bool header_updated = false;
ae23c9
 
ae23c9
     ret = bdrv_pread(bs->file, 0, &header, sizeof(header));
ae23c9
     if (ret < 0) {
ae23c9
@@ -1488,23 +1487,9 @@ static int coroutine_fn qcow2_do_open(BlockDriverState *bs, QDict *options,
ae23c9
         s->autoclear_features &= QCOW2_AUTOCLEAR_MASK;
ae23c9
     }
ae23c9
 
ae23c9
-    if (s->dirty_bitmaps_loaded) {
ae23c9
-        /* It's some kind of reopen. There are no known cases where we need to
ae23c9
-         * reload bitmaps in such a situation, so it's safer to skip them.
ae23c9
-         *
ae23c9
-         * Moreover, if we have some readonly bitmaps and we are reopening for
ae23c9
-         * rw we should reopen bitmaps correspondingly.
ae23c9
-         */
ae23c9
-        if (bdrv_has_readonly_bitmaps(bs) &&
ae23c9
-            !bdrv_is_read_only(bs) && !(bdrv_get_flags(bs) & BDRV_O_INACTIVE))
ae23c9
-        {
ae23c9
-            qcow2_reopen_bitmaps_rw_hint(bs, &header_updated, &local_err);
ae23c9
-        }
ae23c9
-    } else {
ae23c9
-        header_updated = qcow2_load_dirty_bitmaps(bs, &local_err);
ae23c9
-        s->dirty_bitmaps_loaded = true;
ae23c9
+    if (qcow2_load_dirty_bitmaps(bs, &local_err)) {
ae23c9
+        update_header = false;
ae23c9
     }
ae23c9
-    update_header = update_header && !header_updated;
ae23c9
     if (local_err != NULL) {
ae23c9
         error_propagate(errp, local_err);
ae23c9
         ret = -EINVAL;
ae23c9
diff --git a/block/qcow2.h b/block/qcow2.h
ae23c9
index d2c63e4..43163b2 100644
ae23c9
--- a/block/qcow2.h
ae23c9
+++ b/block/qcow2.h
ae23c9
@@ -299,7 +299,6 @@ typedef struct BDRVQcow2State {
ae23c9
     uint32_t nb_bitmaps;
ae23c9
     uint64_t bitmap_directory_size;
ae23c9
     uint64_t bitmap_directory_offset;
ae23c9
-    bool dirty_bitmaps_loaded;
ae23c9
 
ae23c9
     int flags;
ae23c9
     int qcow_version;
ae23c9
-- 
ae23c9
1.8.3.1
ae23c9