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