From 2c46c6c18f7f5e432110b43ed6e624f9be5d4d6d Mon Sep 17 00:00:00 2001 From: Tony Hutter Date: Wed, 23 Apr 2025 18:15:22 -0700 Subject: [PATCH 1/3] RPM: Hold back incompatible kernel packages on Fedora A user reported that when your upgrade your kernel packages on Fedora with ZFS installed, only the kernel-devel package gets held back to the ZFS-supported version, but not the other kernel packages. So if ZFS only supports the 6.13 kernel, Fedora will still happily upgrade the kernel RPMs to 6.14, but hold back kernel-devel at 6.13, for example. This commit includes version checks for the 'kernel', 'kernel-core' and 'kernel-modules-core' packages. Closes: #17265 Original-patch-by: @jkool702 Signed-off-by: Tony Hutter --- rpm/generic/zfs-dkms.spec.in | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/rpm/generic/zfs-dkms.spec.in b/rpm/generic/zfs-dkms.spec.in index 6735c4a67ec5..36f1545222ec 100644 --- a/rpm/generic/zfs-dkms.spec.in +++ b/rpm/generic/zfs-dkms.spec.in @@ -30,9 +30,19 @@ Requires(preun): dkms >= 2.2.0.3 Requires: gcc, make, perl, diffutils Requires(post): gcc, make, perl, diffutils %if 0%{?rhel}%{?fedora}%{?mageia}%{?suse_version}%{?openEuler} +# Hold back kernel upgrades if kernel is not supported by ZFS Requires: kernel-devel >= @ZFS_META_KVER_MIN@, kernel-devel <= @ZFS_META_KVER_MAX@.999 Requires(post): kernel-devel >= @ZFS_META_KVER_MIN@, kernel-devel <= @ZFS_META_KVER_MAX@.999 Conflicts: kernel-devel < @ZFS_META_KVER_MIN@, kernel-devel > @ZFS_META_KVER_MAX@.999 +Requires: kernel-modules-core >= @ZFS_META_KVER_MIN@, kernel-modules-core <= @ZFS_META_KVER_MAX@.999 +Requires(post): kernel-modules-core >= @ZFS_META_KVER_MIN@, kernel-modules-core <= @ZFS_META_KVER_MAX@.999 +Conflicts: kernel-modules-core < @ZFS_META_KVER_MIN@, kernel-modules-core > @ZFS_META_KVER_MAX@.999 +Requires: kernel-core >= @ZFS_META_KVER_MIN@, kernel-core <= @ZFS_META_KVER_MAX@.999 +Requires(post): kernel-core >= @ZFS_META_KVER_MIN@, kernel-core <= @ZFS_META_KVER_MAX@.999 +Conflicts: kernel-core < @ZFS_META_KVER_MIN@, kernel-core > @ZFS_META_KVER_MAX@.999 +Requires: kernel >= @ZFS_META_KVER_MIN@, kernel <= @ZFS_META_KVER_MAX@.999 +Requires(post): kernel >= @ZFS_META_KVER_MIN@, kernel <= @ZFS_META_KVER_MAX@.999 +Conflicts: kernel < @ZFS_META_KVER_MIN@, kernel > @ZFS_META_KVER_MAX@.999 Obsoletes: spl-dkms <= %{version} %endif Provides: %{module}-kmod = %{version} From 829e65f7f8182dc0a5fb24d48030e6863f9e9194 Mon Sep 17 00:00:00 2001 From: jkool702 <107448833+jkool702@users.noreply.github.com> Date: Fri, 25 Apr 2025 00:10:49 -0400 Subject: [PATCH 2/3] Update zfs-dkms.spec.in limits to "Requires" dependencies to kernel-devel-matched (which is basically kernel-core+kernel-devel). Adds "Conflicts" dependencies to cover all the rerst of the non-debug kernel subpackages. --- rpm/generic/zfs-dkms.spec.in | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/rpm/generic/zfs-dkms.spec.in b/rpm/generic/zfs-dkms.spec.in index 36f1545222ec..90ed3890fcbb 100644 --- a/rpm/generic/zfs-dkms.spec.in +++ b/rpm/generic/zfs-dkms.spec.in @@ -31,18 +31,20 @@ Requires: gcc, make, perl, diffutils Requires(post): gcc, make, perl, diffutils %if 0%{?rhel}%{?fedora}%{?mageia}%{?suse_version}%{?openEuler} # Hold back kernel upgrades if kernel is not supported by ZFS -Requires: kernel-devel >= @ZFS_META_KVER_MIN@, kernel-devel <= @ZFS_META_KVER_MAX@.999 -Requires(post): kernel-devel >= @ZFS_META_KVER_MIN@, kernel-devel <= @ZFS_META_KVER_MAX@.999 -Conflicts: kernel-devel < @ZFS_META_KVER_MIN@, kernel-devel > @ZFS_META_KVER_MAX@.999 -Requires: kernel-modules-core >= @ZFS_META_KVER_MIN@, kernel-modules-core <= @ZFS_META_KVER_MAX@.999 -Requires(post): kernel-modules-core >= @ZFS_META_KVER_MIN@, kernel-modules-core <= @ZFS_META_KVER_MAX@.999 -Conflicts: kernel-modules-core < @ZFS_META_KVER_MIN@, kernel-modules-core > @ZFS_META_KVER_MAX@.999 -Requires: kernel-core >= @ZFS_META_KVER_MIN@, kernel-core <= @ZFS_META_KVER_MAX@.999 -Requires(post): kernel-core >= @ZFS_META_KVER_MIN@, kernel-core <= @ZFS_META_KVER_MAX@.999 -Conflicts: kernel-core < @ZFS_META_KVER_MIN@, kernel-core > @ZFS_META_KVER_MAX@.999 -Requires: kernel >= @ZFS_META_KVER_MIN@, kernel <= @ZFS_META_KVER_MAX@.999 -Requires(post): kernel >= @ZFS_META_KVER_MIN@, kernel <= @ZFS_META_KVER_MAX@.999 +Requires: kernel-devel-matched >= @ZFS_META_KVER_MIN@, kernel-devel-matched <= @ZFS_META_KVER_MAX@.999 +Requires(post): kernel-devel-matched >= @ZFS_META_KVER_MIN@, kernel-devel-matched <= @ZFS_META_KVER_MAX@.999 +Conflicts: kernel-devel-matched < @ZFS_META_KVER_MIN@, kernel-devel-matched > @ZFS_META_KVER_MAX@.999 Conflicts: kernel < @ZFS_META_KVER_MIN@, kernel > @ZFS_META_KVER_MAX@.999 +Conflicts: kernel-modules-core < @ZFS_META_KVER_MIN@, kernel-modules-core > @ZFS_META_KVER_MAX@.999 +Conflicts: kernel-modules < @ZFS_META_KVER_MIN@, kernel-modules > @ZFS_META_KVER_MAX@.999 +Conflicts: kernel-modules-extra < @ZFS_META_KVER_MIN@, kernel-modules-extra > @ZFS_META_KVER_MAX@.999 +Conflicts: kernel-modules-internal < @ZFS_META_KVER_MIN@, kernel-modules-internal > @ZFS_META_KVER_MAX@.999 +Conflicts: kernel-uki-virt-addons < @ZFS_META_KVER_MIN@, kernel-uki-virt-addons > @ZFS_META_KVER_MAX@.999 +Conflicts: kernel-tools-libs-devel < @ZFS_META_KVER_MIN@, kernel-tools-libs-devel > @ZFS_META_KVER_MAX@.999 +Conflicts: kernel-selftests-internal < @ZFS_META_KVER_MIN@, kernel-selftests-internal > @ZFS_META_KVER_MAX@.999 +Conflicts: kernel-headers < @ZFS_META_KVER_MIN@, kernel-headers > @ZFS_META_KVER_MAX@.999 +Conflicts: kernel-cross-headers < @ZFS_META_KVER_MIN@, kernel-cross-headers > @ZFS_META_KVER_MAX@.999 +Conflicts: kernel-doc < @ZFS_META_KVER_MIN@, kernel-doc > @ZFS_META_KVER_MAX@.999 Obsoletes: spl-dkms <= %{version} %endif Provides: %{module}-kmod = %{version} From f606c2942365bb8cf9ccea9a3b315af43d6b972d Mon Sep 17 00:00:00 2001 From: jkool702 <107448833+jkool702@users.noreply.github.com> Date: Fri, 25 Apr 2025 09:58:09 -0400 Subject: [PATCH 3/3] Update zfs-dkms.spec.in Signed-off-by: jkool702 <107448833+jkool702@users.noreply.github.com> --- rpm/generic/zfs-dkms.spec.in | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/rpm/generic/zfs-dkms.spec.in b/rpm/generic/zfs-dkms.spec.in index 90ed3890fcbb..333b3a7f00f7 100644 --- a/rpm/generic/zfs-dkms.spec.in +++ b/rpm/generic/zfs-dkms.spec.in @@ -34,9 +34,21 @@ Requires(post): gcc, make, perl, diffutils Requires: kernel-devel-matched >= @ZFS_META_KVER_MIN@, kernel-devel-matched <= @ZFS_META_KVER_MAX@.999 Requires(post): kernel-devel-matched >= @ZFS_META_KVER_MIN@, kernel-devel-matched <= @ZFS_META_KVER_MAX@.999 Conflicts: kernel-devel-matched < @ZFS_META_KVER_MIN@, kernel-devel-matched > @ZFS_META_KVER_MAX@.999 +Requires: kernel-devel >= @ZFS_META_KVER_MIN@, kernel-devel <= @ZFS_META_KVER_MAX@.999 +Requires(post): kernel-devel >= @ZFS_META_KVER_MIN@, kernel-devel <= @ZFS_META_KVER_MAX@.999 +Conflicts: kernel-devel < @ZFS_META_KVER_MIN@, kernel-devel > @ZFS_META_KVER_MAX@.999 +Requires: kernel-core >= @ZFS_META_KVER_MIN@, kernel-core <= @ZFS_META_KVER_MAX@.999 +Requires(post): kernel-core >= @ZFS_META_KVER_MIN@, kernel-core <= @ZFS_META_KVER_MAX@.999 +Conflicts: kernel-core < @ZFS_META_KVER_MIN@, kernel-core > @ZFS_META_KVER_MAX@.999 +Requires: kernel >= @ZFS_META_KVER_MIN@, kernel <= @ZFS_META_KVER_MAX@.999 +Requires(post): kernel >= @ZFS_META_KVER_MIN@, kernel <= @ZFS_META_KVER_MAX@.999 Conflicts: kernel < @ZFS_META_KVER_MIN@, kernel > @ZFS_META_KVER_MAX@.999 -Conflicts: kernel-modules-core < @ZFS_META_KVER_MIN@, kernel-modules-core > @ZFS_META_KVER_MAX@.999 +Requires: kernel-modules >= @ZFS_META_KVER_MIN@, kernel-modules <= @ZFS_META_KVER_MAX@.999 +Requires(post): kernel-modules >= @ZFS_META_KVER_MIN@, kernel-modules <= @ZFS_META_KVER_MAX@.999 Conflicts: kernel-modules < @ZFS_META_KVER_MIN@, kernel-modules > @ZFS_META_KVER_MAX@.999 +Requires: kernel-modules-core >= @ZFS_META_KVER_MIN@, kernel-modules-core <= @ZFS_META_KVER_MAX@.999 +Requires(post): kernel-modules-core >= @ZFS_META_KVER_MIN@, kernel-modules-core <= @ZFS_META_KVER_MAX@.999 +Conflicts: kernel-modules-core < @ZFS_META_KVER_MIN@, kernel-modules-core > @ZFS_META_KVER_MAX@.999 Conflicts: kernel-modules-extra < @ZFS_META_KVER_MIN@, kernel-modules-extra > @ZFS_META_KVER_MAX@.999 Conflicts: kernel-modules-internal < @ZFS_META_KVER_MIN@, kernel-modules-internal > @ZFS_META_KVER_MAX@.999 Conflicts: kernel-uki-virt-addons < @ZFS_META_KVER_MIN@, kernel-uki-virt-addons > @ZFS_META_KVER_MAX@.999