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