]> git.proxmox.com Git - pve-manager.git/commitdiff
pve7to8: allow arbitrary newer running '-pve' kernels after upgrade
authorFiona Ebner <f.ebner@proxmox.com>
Tue, 28 May 2024 10:59:23 +0000 (12:59 +0200)
committerFabian Grünbichler <f.gruenbichler@proxmox.com>
Thu, 4 Jul 2024 08:43:37 +0000 (10:43 +0200)
As recently reported in the community forum [0], 6.8 pve kernels would
not be detected correctly by the script. Allow arbitrary newer
versions if already upgraded for future-proofing.

[0]: https://forum.proxmox.com/threads/145723/post-664612

Suggested-by: Dominik Csapak <d.csapak@proxmox.com>
Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
[FG: made `return 0;` explicit in closure]
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
PVE/CLI/pve7to8.pm

index b34c836201cc2c2f26a0e2c2dabc2688adbf697c..940fb5c6fa5bbf21475e890f25ad16f21cc3cc4a 100644 (file)
@@ -204,17 +204,30 @@ sub check_pve_packages {
        }
 
        # FIXME: better differentiate between 6.2 from bullseye or bookworm
-       my ($krunning, $kinstalled) = (qr/6\.(?:2\.(?:[2-9]\d+|1[6-8]|1\d\d+)|5)[^~]*$/, 'proxmox-kernel-6.2');
+       my $kinstalled = 'proxmox-kernel-6.2';
        if (!$upgraded) {
            # we got a few that avoided 5.15 in cluster with mixed CPUs, so allow older too
-           ($krunning, $kinstalled) = (qr/(?:5\.(?:13|15)|6\.2)/, 'pve-kernel-5.15');
+           $kinstalled = 'pve-kernel-5.15';
        }
 
+       my $kernel_version_is_expected = sub {
+           my ($version) = @_;
+
+           return $version =~ m/^(?:5\.(?:13|15)|6\.2)/ if !$upgraded;
+
+           if ($version =~ m/^6\.(?:2\.(?:[2-9]\d+|1[6-8]|1\d\d+)|5)[^~]*$/) {
+               return 1;
+           } elsif ($version =~ m/^(\d+).(\d+)[^~]*-pve$/) {
+               return $1 >= 6 && $2 >= 2;
+           }
+           return 0;
+       };
+
        print "\nChecking running kernel version..\n";
        my $kernel_ver = $proxmox_ve->{RunningKernel};
        if (!defined($kernel_ver)) {
            log_fail("unable to determine running kernel version.");
-       } elsif ($kernel_ver =~ /^$krunning/) {
+       } elsif ($kernel_version_is_expected->($kernel_ver)) {
            if ($upgraded) {
                log_pass("running new kernel '$kernel_ver' after upgrade.");
            } else {
@@ -227,7 +240,7 @@ sub check_pve_packages {
            log_warn("unexpected running and installed kernel '$kernel_ver'.");
        }
 
-       if ($upgraded && $kernel_ver =~ /^$krunning/) {
+       if ($upgraded && $kernel_version_is_expected->($kernel_ver)) {
            my $outdated_kernel_meta_pkgs = [];
            for my $kernel_meta_version ('5.4', '5.11', '5.13', '5.15') {
                my $pkg = "pve-kernel-${kernel_meta_version}";