[pve-devel] applied: [PATCH qemu-server 1/2] Use 'QEMU version' -> '+pve-version' mapping for machine types
Thomas Lamprecht
t.lamprecht at proxmox.com
Wed Feb 12 10:47:23 CET 2020
On 2/10/20 4:05 PM, Stefan Reiter wrote:
> The previously introduced approach can fail for pinned versions when a
> new QEMU release is introduced. The saner approach is to use a mapping
> that gives one pve-version for each QEMU release.
>
> Fortunately, the old system has not been bumped yet, so we can still
> change it without too much effort.
>
> QEMU versions without a mapping are assumed to be pve0, 4.1 is mapped to
> pve1 since thats what we had as our default previously.
>
> Pinned machine versions (i.e. pc-i440fx-4.1) are always assumed to be
> pve0, for specific pve-versions they'd have to be pinned as well (i.e.
> pc-i440fx-4.1+pve1).
>
> The new logic also makes the pve-version dynamic, and starts VMs with
> the lowest possible 'feature-level', i.e. if a feature is only available
> with 4.1+pve2, but the VM isn't using it, we still start it with
> 4.1+pve0.
>
> We die if we don't support a version that is requested from us. This
> allows us to use the pve-version as live-migration blocks (i.e. bumping
> the version and then live-migrating a VM which uses the new feature (so
> is running with the bumped version) to an outdated node will present the
> user with a helpful error message and fail instead of silently modifying
> the config and only failing *after* the migration).
>
> $version_guard is introduced in config_to_command to use for features
> that need to check pve-version, it automatically handles selecting the
> newest necessary pve-version for the VM.
>
> Tests have to be adjusted, since all of them now resolve to pve0 instead
> of pve1. EXPECT_ERROR matching is changed to use 'eq' instead of regex
> to allow special characters in error messages.
>
> Signed-off-by: Stefan Reiter <s.reiter at proxmox.com>
> ---
>
> For some reason, thinking this through is astonishingly confusing. My head is
> spinning with QEMU versions, and I'll probably have nightmares of '+pve0'
> tonight, but I *think* this should now cover all of our bases?
>
> Based on several off-list email and in-person discussions with Thomas and
> Dominik.
>
> Speaking of @Dominik: You'd have to rebase your recent patch [0] to use the new
> format.
>
> Anyway, thourough review appreciated, let's avoid having to change this again.
>
> [0] https://pve.proxmox.com/pipermail/pve-devel/2020-February/041588.html
>
>
> PVE/QemuServer.pm | 53 +++++++++++++++----
> PVE/QemuServer/Machine.pm | 38 ++++++++++++-
> test/cfg2cmd/i440fx-win10-hostpci.conf.cmd | 2 +-
> .../minimal-defaults-to-new-machine.conf | 2 +-
> ...imal-defaults-unsupported-pve-version.conf | 5 ++
> test/cfg2cmd/minimal-defaults.conf.cmd | 2 +-
> test/cfg2cmd/pinned-version.conf.cmd | 2 +-
> .../q35-linux-hostpci-multifunction.conf.cmd | 2 +-
> test/cfg2cmd/q35-linux-hostpci.conf.cmd | 2 +-
> test/cfg2cmd/q35-win10-hostpci.conf.cmd | 2 +-
> test/cfg2cmd/spice-linux-4.1.conf.cmd | 2 +-
> test/run_config2command_tests.pl | 2 +-
> 12 files changed, 92 insertions(+), 22 deletions(-)
> create mode 100644 test/cfg2cmd/minimal-defaults-unsupported-pve-version.conf
>
applied, head now also spinning, and it's probably a good idea to let this update
traverse a bit slower through our repository cascade than normal..
Thanks!
More information about the pve-devel
mailing list