diff options
author | Adam C. Stephens <2071575+adamcstephens@users.noreply.github.com> | 2024-04-08 07:40:53 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-08 07:40:53 -0400 |
commit | 6201acb99fcb686ed0157219aca1530599d5e502 (patch) | |
tree | dc6c603fe9cb5c0891074254d65bd6516ebd6c08 | |
parent | 4faccff247e15337216fcce4988794a6a0410b02 (diff) | |
parent | 98cb00a7d068755b02348cd08a4852233623dc01 (diff) |
Merge pull request #302540 from Ma27/zfs-latest-compat-fix-2311
[23.11] ZFS latestCompatibleLinuxPackages fixes, zfs: 2.1.14 -> 2.1.15
-rw-r--r-- | nixos/modules/tasks/filesystems/zfs.nix | 39 | ||||
-rw-r--r-- | pkgs/os-specific/linux/zfs/2_1.nix | 10 | ||||
-rw-r--r-- | pkgs/os-specific/linux/zfs/stable.nix | 6 | ||||
-rw-r--r-- | pkgs/os-specific/linux/zfs/unstable.nix | 7 |
4 files changed, 12 insertions, 50 deletions
diff --git a/nixos/modules/tasks/filesystems/zfs.nix b/nixos/modules/tasks/filesystems/zfs.nix index 72bc79f31b68a..a9aaf84877117 100644 --- a/nixos/modules/tasks/filesystems/zfs.nix +++ b/nixos/modules/tasks/filesystems/zfs.nix @@ -340,24 +340,12 @@ in removeLinuxDRM = lib.mkOption { type = types.bool; default = false; - description = lib.mdDoc '' - Linux 6.2 dropped some kernel symbols required on aarch64 required by zfs. - Enabling this option will bring them back to allow this kernel version. - Note that in some jurisdictions this may be illegal as it might be considered - removing copyright protection from the code. - See https://www.ifross.org/?q=en/artikel/ongoing-dispute-over-value-exportsymbolgpl-function for further information. - - If configure your kernel package with `zfs.latestCompatibleLinuxPackages`, you will need to also pass removeLinuxDRM to that package like this: + description = '' + Patch the kernel to change symbols needed by ZFS from + EXPORT_SYMBOL_GPL to EXPORT_SYMBOL. - ``` - { pkgs, ... }: { - boot.kernelPackages = (pkgs.zfs.override { - removeLinuxDRM = pkgs.hostPlatform.isAarch64; - }).latestCompatibleLinuxPackages; - - boot.zfs.removeLinuxDRM = true; - } - ``` + Currently has no effect, but may again in future if a kernel + update breaks ZFS due to symbols being newly changed to GPL. ''; }; }; @@ -583,7 +571,7 @@ in kernelParams = lib.optionals (!config.boot.zfs.allowHibernation) [ "nohibernate" ]; extraModulePackages = [ - (cfgZfs.modulePackage.override { inherit (cfgZfs) removeLinuxDRM; }) + cfgZfs.modulePackage ]; }; @@ -710,21 +698,6 @@ in services.udev.packages = [ cfgZfs.package ]; # to hook zvol naming, etc. systemd.packages = [ cfgZfs.package ]; - # Export kernel_neon_* symbols again. - # This change is necessary until ZFS figures out a solution - # with upstream or in their build system to fill the gap for - # this symbol. - # In the meantime, we restore what was once a working piece of code - # in the kernel. - boot.kernelPatches = lib.optional (cfgZfs.removeLinuxDRM && pkgs.stdenv.hostPlatform.system == "aarch64-linux") { - name = "export-neon-symbols-as-gpl"; - patch = pkgs.fetchpatch { - url = "https://github.com/torvalds/linux/commit/aaeca98456431a8d9382ecf48ac4843e252c07b3.patch"; - hash = "sha256-L2g4G1tlWPIi/QRckMuHDcdWBcKpObSWSRTvbHRIwIk="; - revert = true; - }; - }; - systemd.services = let createImportService' = pool: createImportService { inherit pool; diff --git a/pkgs/os-specific/linux/zfs/2_1.nix b/pkgs/os-specific/linux/zfs/2_1.nix index 7da642c5278b1..97173a5154a59 100644 --- a/pkgs/os-specific/linux/zfs/2_1.nix +++ b/pkgs/os-specific/linux/zfs/2_1.nix @@ -2,7 +2,6 @@ , kernel ? null , stdenv , linuxKernel -, removeLinuxDRM ? false , lib , nixosTests , ... @@ -16,18 +15,15 @@ callPackage ./generic.nix args { # this attribute is the correct one for this package. kernelModuleAttribute = "zfs_2_1"; # check the release notes for compatible kernels - kernelCompatible = - if stdenv'.isx86_64 || removeLinuxDRM - then kernel.kernelOlder "6.6" - else kernel.kernelOlder "6.2"; + kernelCompatible = kernel.kernelOlder "6.8"; latestCompatibleLinuxPackages = linuxKernel.packages.linux_6_6; # This is a fixed version to the 2.1.x series, move only # if the 2.1.x series moves. - version = "2.1.14"; + version = "2.1.15"; - hash = "sha256-RVAoZbV9yclGuN+D37SB6UCRFbbLEpBoyrQOQCVsQwE="; + hash = "sha256-zFO8fMbirEOrn5W57rAN7IWY6EIXG8jDXqhP7BWJyiY="; tests = [ nixosTests.zfs.series_2_1 diff --git a/pkgs/os-specific/linux/zfs/stable.nix b/pkgs/os-specific/linux/zfs/stable.nix index 8acc66d74636a..5b5084511a51a 100644 --- a/pkgs/os-specific/linux/zfs/stable.nix +++ b/pkgs/os-specific/linux/zfs/stable.nix @@ -2,7 +2,6 @@ , kernel ? null , stdenv , linuxKernel -, removeLinuxDRM ? false , nixosTests , ... } @ args: @@ -15,10 +14,7 @@ callPackage ./generic.nix args { # this attribute is the correct one for this package. kernelModuleAttribute = "zfs"; # check the release notes for compatible kernels - kernelCompatible = - if stdenv'.isx86_64 || removeLinuxDRM - then kernel.kernelOlder "6.8" - else kernel.kernelOlder "6.2"; + kernelCompatible = kernel.kernelOlder "6.8"; latestCompatibleLinuxPackages = linuxKernel.packages.linux_6_6; diff --git a/pkgs/os-specific/linux/zfs/unstable.nix b/pkgs/os-specific/linux/zfs/unstable.nix index 28b07b73fc795..a9ad7a218207e 100644 --- a/pkgs/os-specific/linux/zfs/unstable.nix +++ b/pkgs/os-specific/linux/zfs/unstable.nix @@ -2,7 +2,6 @@ , kernel ? null , stdenv , linuxKernel -, removeLinuxDRM ? false , nixosTests , ... } @ args: @@ -14,11 +13,9 @@ callPackage ./generic.nix args { # You have to ensure that in `pkgs/top-level/linux-kernels.nix` # this attribute is the correct one for this package. kernelModuleAttribute = "zfsUnstable"; + # check the release notes for compatible kernels - kernelCompatible = - if stdenv'.isx86_64 || removeLinuxDRM - then kernel.kernelOlder "6.7" - else kernel.kernelOlder "6.2"; + kernelCompatible = kernel.kernelOlder "6.9"; latestCompatibleLinuxPackages = linuxKernel.packages.linux_6_6; |