From: "Daniel P. Berrangé" <berrange@redhat.com>
To: "Thomas Huth" <thuth@redhat.com>,
qemu-devel@nongnu.org, "Peter Maydell" <peter.maydell@linaro.org>,
devel@lists.libvirt.org, "Alex Bennée" <alex.bennee@linaro.org>,
"Laurent Vivier" <laurent@vivier.eu>,
qemu-s390x@nongnu.org, qemu-arm@nongnu.org, qemu-ppc@nongnu.org,
"Peter Xu" <peterx@redhat.com>, "Fabiano Rosas" <farosas@suse.de>
Subject: Re: [PATCH] docs/about: Automatically deprecate versioned machine types older than 6 years
Date: Tue, 30 Apr 2024 11:21:07 +0100 [thread overview]
Message-ID: <ZjDGE9CT-cX1iiGB@redhat.com> (raw)
In-Reply-To: <ZjDAGuONZ_Zem3fL@redhat.com>
On Tue, Apr 30, 2024 at 10:55:38AM +0100, Daniel P. Berrangé wrote:
> On Tue, Apr 30, 2024 at 08:45:29AM +0200, Thomas Huth wrote:
> > Old machine types often have bugs or work-arounds that affect our
> > possibilities to move forward with the QEMU code base (see for example
> > https://gitlab.com/qemu-project/qemu/-/issues/2213 for a bug that likely
> > cannot be fixed without breaking live migration with old machine types,
> > or https://lists.gnu.org/archive/html/qemu-devel/2018-12/msg04516.html or
> > commit ea985d235b86). So instead of going through the process of manually
> > deprecating old machine types again and again, let's rather add an entry
> > that can stay, which declares that machine types older than 6 years are
> > considered as deprecated automatically. Six years should be sufficient to
> > support the release cycles of most Linux distributions.
>
> Reading this again, I think we're mixing two concepts here.
>
> With this 6 year cut off, we're declaring the actual *removal* date,
> not the deprecation date.
>
> A deprecation is something that happens prior to removal normally,
> to give people a warning of /future/ removal, as a suggestion
> that they stop using it.
>
> If we never set the 'deprecation_reason' on a machine type, then
> unless someone reads this doc, they'll never realize they are on
> a deprecated machine.
>
> When it comes to machine types, I see deprecation as a way to tell
> people they should not deploy a /new/ VM on a machine type, only
> use it for back compat (incoming migration / restore from saved
> image) with existing deployed VMs.
>
> If we delete a machine on the 6 year anniversary, then users
> don't want to be deploying /new/ VMs using that on the
> 5 year anniversary as it only gives a 1 year upgrade window.
>
> So how long far back do we consider it reasonable for a user
> to deploy a /new/ VM on an old machine type ? 1 year, 2 years,
> 3 years ?
>
>
> How about picking the half way point ? 3 years ?
>
> ie, set deprecation_reason for any machine that is 3 years
> old, but declare that our deprecation cycle lasts for
> 3 years, instead of the normal 1 year, when applied to
> machine types.
>
> This would give a strong hint that users should get off the
> old machine type, several years before its finally deleted.
The m68k/arm archs have a nice macro for defining versions
that exposes major/minor directly. That would let us
automatically set the deprecation flag after 3 years,
avoiding manually writing patches for each release:
diff --git a/hw/arm/virt.c b/hw/arm/virt.c
index 3c93c0c0a6..e40209f60a 100644
--- a/hw/arm/virt.c
+++ b/hw/arm/virt.c
@@ -101,6 +101,11 @@ static void arm_virt_compat_set(MachineClass *mc)
arm_virt_compat_len);
}
+#define MACHINE_IS_DEPRECATED(major, minor) \
+ ((QEMU_VERSION_MAJOR - major) > 3 || \
+ ((QEMU_VERSION_MAJOR - major) == 3 && \
+ (QEMU_VERSION_MINOR - minor) > 0))
+
#define DEFINE_VIRT_MACHINE_LATEST(major, minor, latest) \
static void virt_##major##_##minor##_class_init(ObjectClass *oc, \
void *data) \
@@ -109,6 +114,9 @@ static void arm_virt_compat_set(MachineClass *mc)
arm_virt_compat_set(mc); \
virt_machine_##major##_##minor##_options(mc); \
mc->desc = "QEMU " # major "." # minor " ARM Virtual Machine"; \
+ if (MACHINE_IS_DEPRECATED(major, minor)) { \
+ mc->deprecation_reason = "machine virt-" # major "." # minor " is not recommended for newly deployed VMs"; \
+ } \
if (latest) { \
mc->alias = "virt"; \
} \
we could easily change other arches to enable the same thing.
Then all we need do manually is the actual deletion. We would make
it a BUILD_BUG_ON after say 20 releases to force us to remember the
actual deletion at the 6 year point, without creating an immediate
build fail in that exact 18th release cycle.
With regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
next prev parent reply other threads:[~2024-04-30 10:22 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-30 6:45 [PATCH] docs/about: Automatically deprecate versioned machine types older than 6 years Thomas Huth
2024-04-30 9:32 ` Peter Maydell
2024-04-30 9:40 ` Philippe Mathieu-Daudé
2024-04-30 9:58 ` Daniel P. Berrangé
2024-04-30 10:02 ` Thomas Huth
2024-04-30 9:45 ` Daniel P. Berrangé
2024-04-30 9:58 ` Cédric Le Goater
2024-04-30 9:55 ` Daniel P. Berrangé
2024-04-30 10:21 ` Daniel P. Berrangé [this message]
2024-04-30 10:29 ` Thomas Huth
2024-04-30 16:54 ` Daniel P. Berrangé
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZjDGE9CT-cX1iiGB@redhat.com \
--to=berrange@redhat.com \
--cc=alex.bennee@linaro.org \
--cc=devel@lists.libvirt.org \
--cc=farosas@suse.de \
--cc=laurent@vivier.eu \
--cc=peter.maydell@linaro.org \
--cc=peterx@redhat.com \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
--cc=qemu-s390x@nongnu.org \
--cc=thuth@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).