Blame SOURCES/0019-qcow2-Deprecation-warning-when-opening-v2-images-rw.patch

495e37
From a3bb2330bbf68faabc57b768cdf3ae2f4f4d86f3 Mon Sep 17 00:00:00 2001
495e37
From: Kevin Wolf <kwolf@redhat.com>
495e37
Date: Fri, 20 Aug 2021 18:25:12 +0200
495e37
Subject: qcow2: Deprecation warning when opening v2 images rw
495e37
MIME-Version: 1.0
495e37
Content-Type: text/plain; charset=UTF-8
495e37
Content-Transfer-Encoding: 8bit
495e37
495e37
RH-Author: Kevin Wolf <kwolf@redhat.com>
495e37
RH-MergeRequest: 37: qcow2: Deprecation warning when opening v2 images rw
495e37
RH-Commit: [1/1] f450d0ae32d35063b28c72c4f2d2ebb9e6d8db3e (kmwolf/centos-qemu-kvm)
495e37
RH-Bugzilla: 1951814
495e37
RH-Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
495e37
RH-Acked-by: Hanna Reitz <hreitz@redhat.com>
495e37
RH-Acked-by: Thomas Huth <thuth@redhat.com>
495e37
RH-Acked-by: Philippe Mathieu-Daudé <philmd@redhat.com>
495e37
495e37
qcow2 v3 has been around for a long time (since QEMU 1.1/RHEL 7), so
495e37
there is no real reason any more to use it. People still using it might
495e37
do so unintentionally. Warn about it and suggest upgrading during the
495e37
RHEL 9 timeframe so that the code can possibly be disabled in RHEL 10.
495e37
495e37
The warning is restricted to read-write mode and the system emulator.
495e37
The primary motivation for not having it in qemu-img is that 'qemu-img
495e37
amend' for upgrades would warn otherwise. It also avoids having to make
495e37
too many changes to the test suite.
495e37
495e37
bdrv_uses_whitelist() is used as a proxy for deciding whether we are
495e37
running in a tool or the system emulator. This is not entirely clean,
495e37
but it's what is available and the same function qcow2_do_open() already
495e37
uses it this way for another warning.
495e37
495e37
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
495e37
495e37
patch_name: kvm-qcow2-Deprecation-warning-when-opening-v2-images-rw.patch
495e37
present_in_specfile: true
495e37
location_in_specfile: 116
495e37
---
495e37
Rebase notes (6.1.0):
495e37
- Replace bs->read_only with bdrv_is_read_only
495e37
---
495e37
 block/qcow2.c                    | 6 ++++++
495e37
 tests/qemu-iotests/common.filter | 1 +
495e37
 2 files changed, 7 insertions(+)
495e37
495e37
diff --git a/block/qcow2.c b/block/qcow2.c
495e37
index d509016756..37d1c26a71 100644
495e37
--- a/block/qcow2.c
495e37
+++ b/block/qcow2.c
495e37
@@ -1336,6 +1336,12 @@ static int coroutine_fn qcow2_do_open(BlockDriverState *bs, QDict *options,
495e37
         ret = -ENOTSUP;
495e37
         goto fail;
495e37
     }
495e37
+    if (header.version < 3 && !bdrv_is_read_only(bs) && bdrv_uses_whitelist()) {
495e37
+        warn_report_once("qcow2 v2 images are deprecated and may not be "
495e37
+                         "supported in future versions. Please consider "
495e37
+                         "upgrading the image with 'qemu-img amend "
495e37
+                         "-o compat=v3'.");
495e37
+    }
495e37
 
495e37
     s->qcow_version = header.version;
495e37
 
495e37
diff --git a/tests/qemu-iotests/common.filter b/tests/qemu-iotests/common.filter
495e37
index 2b2b53946c..c5c2dc39bd 100644
495e37
--- a/tests/qemu-iotests/common.filter
495e37
+++ b/tests/qemu-iotests/common.filter
495e37
@@ -82,6 +82,7 @@ _filter_qemu()
495e37
 {
495e37
     $SED -e "s#\\(^\\|(qemu) \\)$(basename $QEMU_PROG):#\1QEMU_PROG:#" \
495e37
         -e 's#^QEMU [0-9]\+\.[0-9]\+\.[0-9]\+ monitor#QEMU X.Y.Z monitor#' \
495e37
+        -e "/qcow2 v2 images are deprecated/d" \
495e37
         -e $'s#\r##' # QEMU monitor uses \r\n line endings
495e37
 }
495e37
 
495e37
-- 
495e37
2.27.0
495e37