zfs, spl: 0.6.5.11 -> 0.7.0

Changed files
+141 -207
nixos
doc
manual
release-notes
modules
tasks
filesystems
pkgs
os-specific
linux
top-level
+6
nixos/doc/manual/release-notes/rl-1709.xml
···
module where user Fontconfig settings are available.
</para>
</listitem>
</itemizedlist>
···
module where user Fontconfig settings are available.
</para>
</listitem>
+
<listitem>
+
<para>
+
ZFS/SPL have been updated to 0.7.0, <literal>zfsUnstable, splUnstable</literal>
+
have therefore been removed.
+
</para>
+
</listitem>
</itemizedlist>
+1
nixos/modules/rename.nix
···
"Set the option `services.xserver.displayManager.sddm.package' instead.")
(mkRemovedOptionModule [ "fonts" "fontconfig" "forceAutohint" ] "")
(mkRemovedOptionModule [ "fonts" "fontconfig" "renderMonoTTFAsBitmap" ] "")
# ZSH
(mkRenamedOptionModule [ "programs" "zsh" "enableSyntaxHighlighting" ] [ "programs" "zsh" "syntaxHighlighting" "enable" ])
···
"Set the option `services.xserver.displayManager.sddm.package' instead.")
(mkRemovedOptionModule [ "fonts" "fontconfig" "forceAutohint" ] "")
(mkRemovedOptionModule [ "fonts" "fontconfig" "renderMonoTTFAsBitmap" ] "")
+
(mkRemovedOptionModule [ "boot" "zfs" "enableUnstable" ] "0.7.0 is now the default")
# ZSH
(mkRenamedOptionModule [ "programs" "zsh" "enableSyntaxHighlighting" ] [ "programs" "zsh" "syntaxHighlighting" "enable" ])
+1 -18
nixos/modules/tasks/filesystems/zfs.nix
···
kernel = config.boot.kernelPackages;
-
packages = if config.boot.zfs.enableUnstable then {
-
spl = kernel.splUnstable;
-
zfs = kernel.zfsUnstable;
-
zfsUser = pkgs.zfsUnstable;
-
} else {
spl = kernel.spl;
zfs = kernel.zfs;
zfsUser = pkgs.zfs;
···
options = {
boot.zfs = {
-
enableUnstable = mkOption {
-
type = types.bool;
-
default = false;
-
description = ''
-
Use the unstable zfs package. This might be an option, if the latest
-
kernel is not yet supported by a published release of ZFS. Enabling
-
this option will install a development version of ZFS on Linux. The
-
version will have already passed an extensive test suite, but it is
-
more likely to hit an undiscovered bug compared to running a released
-
version of ZFS on Linux.
-
'';
-
};
-
extraPools = mkOption {
type = types.listOf types.str;
default = [];
···
kernel = config.boot.kernelPackages;
+
packages = {
spl = kernel.spl;
zfs = kernel.zfs;
zfsUser = pkgs.zfs;
···
options = {
boot.zfs = {
extraPools = mkOption {
type = types.listOf types.str;
default = [];
+40 -50
pkgs/os-specific/linux/spl/default.nix
···
}:
with stdenv.lib;
let
buildKernel = any (n: n == configFile) [ "kernel" "all" ];
buildUser = any (n: n == configFile) [ "user" "all" ];
-
common = { version, sha256 } @ args : stdenv.mkDerivation rec {
-
name = "spl-${configFile}-${version}${optionalString buildKernel "-${kernel.version}"}";
-
src = fetchFromGitHub {
-
owner = "zfsonlinux";
-
repo = "spl";
-
rev = "spl-${version}";
-
inherit sha256;
-
};
-
patches = [ ./const.patch ./install_prefix.patch ];
-
-
nativeBuildInputs = [ autoreconfHook ];
-
hardeningDisable = [ "pic" ];
-
preConfigure = ''
-
substituteInPlace ./module/spl/spl-generic.c --replace /usr/bin/hostid hostid
-
substituteInPlace ./module/spl/spl-generic.c --replace "PATH=/sbin:/usr/sbin:/bin:/usr/bin" "PATH=${coreutils}:${gawk}:/bin"
-
substituteInPlace ./module/splat/splat-vnode.c --replace "PATH=/sbin:/usr/sbin:/bin:/usr/bin" "PATH=${coreutils}:/bin"
-
substituteInPlace ./module/splat/splat-linux.c --replace "PATH=/sbin:/usr/sbin:/bin:/usr/bin" "PATH=${coreutils}:/bin"
-
'';
-
configureFlags = [
-
"--with-config=${configFile}"
-
] ++ optionals buildKernel [
-
"--with-linux=${kernel.dev}/lib/modules/${kernel.modDirVersion}/source"
-
"--with-linux-obj=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
-
];
-
enableParallelBuilding = true;
-
meta = {
-
description = "Kernel module driver for solaris porting layer (needed by in-kernel zfs)";
-
longDescription = ''
-
This kernel module is a porting layer for ZFS to work inside the linux
-
kernel.
-
'';
-
homepage = http://zfsonlinux.org/;
-
platforms = platforms.linux;
-
license = licenses.gpl2Plus;
-
maintainers = with maintainers; [ jcumming wizeman wkennington fpletz ];
-
};
};
-
-
in
-
assert any (n: n == configFile) [ "kernel" "user" "all" ];
-
assert buildKernel -> kernel != null;
-
{
-
splStable = common {
-
version = "0.6.5.11";
-
sha256 = "192val8035pj2rryi3fwb134avzirhv5ifaj5021vh8bbjx75pd5";
-
};
-
splUnstable = common {
-
version = "0.7.0-rc5";
-
sha256 = "17y25g02c9swi3n90lhjvazcnsr69nh50dz3b8g1c08zlz9n2akp";
-
};
-
}
···
}:
with stdenv.lib;
+
let
buildKernel = any (n: n == configFile) [ "kernel" "all" ];
buildUser = any (n: n == configFile) [ "user" "all" ];
+
in
+
assert any (n: n == configFile) [ "kernel" "user" "all" ];
+
assert buildKernel -> kernel != null;
+
stdenv.mkDerivation rec {
+
name = "spl-${configFile}-${version}${optionalString buildKernel "-${kernel.version}"}";
+
version = "0.7.0";
+
src = fetchFromGitHub {
+
owner = "zfsonlinux";
+
repo = "spl";
+
rev = "spl-${version}";
+
sha256 = "05qqwhxc9nj94y28c97iwfz8gkjwicrhnkj425yb47gqa8rafazk";
+
};
+
patches = [ ./const.patch ./install_prefix.patch ];
+
nativeBuildInputs = [ autoreconfHook ];
+
hardeningDisable = [ "pic" ];
+
preConfigure = ''
+
substituteInPlace ./module/spl/spl-generic.c --replace /usr/bin/hostid hostid
+
substituteInPlace ./module/spl/spl-generic.c --replace "PATH=/sbin:/usr/sbin:/bin:/usr/bin" "PATH=${coreutils}:${gawk}:/bin"
+
substituteInPlace ./module/splat/splat-vnode.c --replace "PATH=/sbin:/usr/sbin:/bin:/usr/bin" "PATH=${coreutils}:/bin"
+
substituteInPlace ./module/splat/splat-linux.c --replace "PATH=/sbin:/usr/sbin:/bin:/usr/bin" "PATH=${coreutils}:/bin"
+
'';
+
configureFlags = [
+
"--with-config=${configFile}"
+
] ++ optionals buildKernel [
+
"--with-linux=${kernel.dev}/lib/modules/${kernel.modDirVersion}/source"
+
"--with-linux-obj=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
+
];
+
enableParallelBuilding = true;
+
meta = {
+
description = "Kernel module driver for solaris porting layer (needed by in-kernel zfs)";
+
longDescription = ''
+
This kernel module is a porting layer for ZFS to work inside the linux
+
kernel.
+
'';
+
homepage = http://zfsonlinux.org/;
+
platforms = platforms.linux;
+
license = licenses.gpl2Plus;
+
maintainers = with maintainers; [ jcumming wizeman wkennington fpletz globin ];
};
+
}
+87 -127
pkgs/os-specific/linux/zfs/default.nix
···
let
buildKernel = any (n: n == configFile) [ "kernel" "all" ];
buildUser = any (n: n == configFile) [ "user" "all" ];
-
common = { version, sha256, extraPatches, spl, incompatibleKernelVersion ? null } @ args:
-
if buildKernel &&
-
(incompatibleKernelVersion != null) &&
-
versionAtLeast kernel.version incompatibleKernelVersion then
-
throw "Linux v${kernel.version} is not yet supported by zfsonlinux v${version}. Try zfsUnstable or set the NixOS option boot.zfs.enableUnstable."
-
else stdenv.mkDerivation rec {
-
name = "zfs-${configFile}-${version}${optionalString buildKernel "-${kernel.version}"}";
-
src = fetchFromGitHub {
-
owner = "zfsonlinux";
-
repo = "zfs";
-
rev = "zfs-${version}";
-
inherit sha256;
-
};
-
patches = extraPatches;
-
buildInputs = [ autoreconfHook nukeReferences ]
-
++ optionals buildKernel [ spl ]
-
++ optionals buildUser [ zlib libuuid python attr ];
-
# for zdb to get the rpath to libgcc_s, needed for pthread_cancel to work
-
NIX_CFLAGS_LINK = "-lgcc_s";
-
hardeningDisable = [ "pic" ];
-
-
preConfigure = ''
-
substituteInPlace ./module/zfs/zfs_ctldir.c --replace "umount -t zfs" "${utillinux}/bin/umount -t zfs"
-
substituteInPlace ./module/zfs/zfs_ctldir.c --replace "mount -t zfs" "${utillinux}/bin/mount -t zfs"
-
substituteInPlace ./lib/libzfs/libzfs_mount.c --replace "/bin/umount" "${utillinux}/bin/umount"
-
substituteInPlace ./lib/libzfs/libzfs_mount.c --replace "/bin/mount" "${utillinux}/bin/mount"
-
substituteInPlace ./udev/rules.d/* --replace "/lib/udev/vdev_id" "$out/lib/udev/vdev_id"
-
substituteInPlace ./cmd/ztest/ztest.c --replace "/usr/sbin/ztest" "$out/sbin/ztest"
-
substituteInPlace ./cmd/ztest/ztest.c --replace "/usr/sbin/zdb" "$out/sbin/zdb"
-
substituteInPlace ./config/user-systemd.m4 --replace "/usr/lib/modules-load.d" "$out/etc/modules-load.d"
-
substituteInPlace ./config/zfs-build.m4 --replace "\$sysconfdir/init.d" "$out/etc/init.d"
-
substituteInPlace ./etc/zfs/Makefile.am --replace "\$(sysconfdir)" "$out/etc"
-
substituteInPlace ./cmd/zed/Makefile.am --replace "\$(sysconfdir)" "$out/etc"
-
substituteInPlace ./module/Makefile.in --replace "/bin/cp" "cp"
-
substituteInPlace ./etc/systemd/system/zfs-share.service.in \
-
--replace "@bindir@/rm " "${coreutils}/bin/rm "
-
./autogen.sh
-
'';
-
-
configureFlags = [
-
"--with-config=${configFile}"
-
] ++ optionals buildUser [
-
"--with-dracutdir=$(out)/lib/dracut"
-
"--with-udevdir=$(out)/lib/udev"
-
"--with-systemdunitdir=$(out)/etc/systemd/system"
-
"--with-systemdpresetdir=$(out)/etc/systemd/system-preset"
-
"--with-mounthelperdir=$(out)/bin"
-
"--sysconfdir=/etc"
-
"--localstatedir=/var"
-
"--enable-systemd"
-
] ++ optionals buildKernel [
-
"--with-spl=${spl}/libexec/spl"
-
"--with-linux=${kernel.dev}/lib/modules/${kernel.modDirVersion}/source"
-
"--with-linux-obj=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
-
];
-
-
enableParallelBuilding = true;
-
-
installFlags = [
-
"sysconfdir=\${out}/etc"
-
"DEFAULT_INITCONF_DIR=\${out}/default"
-
];
-
-
postInstall = ''
-
# Prevent kernel modules from depending on the Linux -dev output.
-
nuke-refs $(find $out -name "*.ko")
-
'' + optionalString buildUser ''
-
# Remove provided services as they are buggy
-
rm $out/etc/systemd/system/zfs-import-*.service
-
sed -i '/zfs-import-scan.service/d' $out/etc/systemd/system/*
-
for i in $out/etc/systemd/system/*; do
-
substituteInPlace $i --replace "zfs-import-cache.service" "zfs-import.target"
-
done
-
# Fix pkgconfig.
-
ln -s ../share/pkgconfig $out/lib/pkgconfig
-
# Remove tests because they add a runtime dependency on gcc
-
rm -rf $out/share/zfs/zfs-tests
-
'';
-
meta = {
-
description = "ZFS Filesystem Linux Kernel module";
-
longDescription = ''
-
ZFS is a filesystem that combines a logical volume manager with a
-
Copy-On-Write filesystem with data integrity detection and repair,
-
snapshotting, cloning, block devices, deduplication, and more.
-
'';
-
homepage = http://zfsonlinux.org/;
-
license = licenses.cddl;
-
platforms = platforms.linux;
-
maintainers = with maintainers; [ jcumming wizeman wkennington fpletz ];
-
};
-
};
-
in
-
assert any (n: n == configFile) [ "kernel" "user" "all" ];
-
assert buildKernel -> kernel != null && spl != null;
-
{
-
# also check if kernel version constraints in
-
# ./nixos/modules/tasks/filesystems/zfs.nix needs
-
# to be adapted
-
zfsStable = common {
-
# comment/uncomment if breaking kernel versions are known
-
incompatibleKernelVersion = "4.12";
-
version = "0.6.5.11";
-
# this package should point to the latest release.
-
sha256 = "1wqz43cjr21m3f52ahcikl2798pbzj5sfy16zqxwiqpv7iy09kr3";
-
extraPatches = [
-
(fetchpatch {
-
url = "https://github.com/Mic92/zfs/compare/zfs-0.6.5.8...nixos-zfs-0.6.5.8.patch";
-
sha256 = "14kqqphzg02m9a7qncdhff8958cfzdrvsid3vsrm9k75lqv1w08z";
-
})
-
];
-
inherit spl;
-
};
-
zfsUnstable = common {
-
# comment/uncomment if breaking kernel versions are known
-
incompatibleKernelVersion = null;
-
version = "0.7.0-rc5";
-
# this package should point to a version / git revision compatible with the latest kernel release
-
sha256 = "1k0fl6lbi5winri58v26k7gngd560hbj0247rnwcbc6j01ixsr5n";
-
extraPatches = [
-
(fetchpatch {
-
url = "https://github.com/Mic92/zfs/compare/zfs-0.7.0-rc3...nixos-zfs-0.7.0-rc3.patch";
-
sha256 = "1vlw98v8xvi8qapzl1jwm69qmfslwnbg3ry1lmacndaxnyckkvhh";
-
})
-
];
-
spl = splUnstable;
-
};
-
}
···
let
buildKernel = any (n: n == configFile) [ "kernel" "all" ];
buildUser = any (n: n == configFile) [ "user" "all" ];
+
in stdenv.mkDerivation rec {
+
name = "zfs-${configFile}-${version}${optionalString buildKernel "-${kernel.version}"}";
+
version = "0.7.0";
+
src = fetchFromGitHub {
+
owner = "zfsonlinux";
+
repo = "zfs";
+
rev = "zfs-${version}";
+
sha256 = "16z0fl282rsmvgk608ii7n410swivkrisp112n2fhhjc1fs0zall";
+
};
+
patches = [
+
(fetchpatch {
+
url = "https://github.com/Mic92/zfs/compare/zfs-0.7.0-rc3...nixos-zfs-0.7.0-rc3.patch";
+
sha256 = "1vlw98v8xvi8qapzl1jwm69qmfslwnbg3ry1lmacndaxnyckkvhh";
+
})
+
];
+
buildInputs = [ autoreconfHook nukeReferences ]
+
++ optionals buildKernel [ spl ]
+
++ optionals buildUser [ zlib libuuid python attr ];
+
# for zdb to get the rpath to libgcc_s, needed for pthread_cancel to work
+
NIX_CFLAGS_LINK = "-lgcc_s";
+
hardeningDisable = [ "pic" ];
+
preConfigure = ''
+
substituteInPlace ./module/zfs/zfs_ctldir.c --replace "umount -t zfs" "${utillinux}/bin/umount -t zfs"
+
substituteInPlace ./module/zfs/zfs_ctldir.c --replace "mount -t zfs" "${utillinux}/bin/mount -t zfs"
+
substituteInPlace ./lib/libzfs/libzfs_mount.c --replace "/bin/umount" "${utillinux}/bin/umount"
+
substituteInPlace ./lib/libzfs/libzfs_mount.c --replace "/bin/mount" "${utillinux}/bin/mount"
+
substituteInPlace ./udev/rules.d/* --replace "/lib/udev/vdev_id" "$out/lib/udev/vdev_id"
+
substituteInPlace ./cmd/ztest/ztest.c --replace "/usr/sbin/ztest" "$out/sbin/ztest"
+
substituteInPlace ./cmd/ztest/ztest.c --replace "/usr/sbin/zdb" "$out/sbin/zdb"
+
substituteInPlace ./config/user-systemd.m4 --replace "/usr/lib/modules-load.d" "$out/etc/modules-load.d"
+
substituteInPlace ./config/zfs-build.m4 --replace "\$sysconfdir/init.d" "$out/etc/init.d"
+
substituteInPlace ./etc/zfs/Makefile.am --replace "\$(sysconfdir)" "$out/etc"
+
substituteInPlace ./cmd/zed/Makefile.am --replace "\$(sysconfdir)" "$out/etc"
+
substituteInPlace ./module/Makefile.in --replace "/bin/cp" "cp"
+
substituteInPlace ./etc/systemd/system/zfs-share.service.in \
+
--replace "@bindir@/rm " "${coreutils}/bin/rm "
+
./autogen.sh
+
'';
+
configureFlags = [
+
"--with-config=${configFile}"
+
] ++ optionals buildUser [
+
"--with-dracutdir=$(out)/lib/dracut"
+
"--with-udevdir=$(out)/lib/udev"
+
"--with-systemdunitdir=$(out)/etc/systemd/system"
+
"--with-systemdpresetdir=$(out)/etc/systemd/system-preset"
+
"--with-mounthelperdir=$(out)/bin"
+
"--sysconfdir=/etc"
+
"--localstatedir=/var"
+
"--enable-systemd"
+
] ++ optionals buildKernel [
+
"--with-spl=${spl}/libexec/spl"
+
"--with-linux=${kernel.dev}/lib/modules/${kernel.modDirVersion}/source"
+
"--with-linux-obj=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
+
];
+
enableParallelBuilding = true;
+
installFlags = [
+
"sysconfdir=\${out}/etc"
+
"DEFAULT_INITCONF_DIR=\${out}/default"
+
];
+
postInstall = ''
+
# Prevent kernel modules from depending on the Linux -dev output.
+
nuke-refs $(find $out -name "*.ko")
+
'' + optionalString buildUser ''
+
# Remove provided services as they are buggy
+
rm $out/etc/systemd/system/zfs-import-*.service
+
sed -i '/zfs-import-scan.service/d' $out/etc/systemd/system/*
+
for i in $out/etc/systemd/system/*; do
+
substituteInPlace $i --replace "zfs-import-cache.service" "zfs-import.target"
+
done
+
# Fix pkgconfig.
+
ln -s ../share/pkgconfig $out/lib/pkgconfig
+
# Remove tests because they add a runtime dependency on gcc
+
rm -rf $out/share/zfs/zfs-tests
+
'';
+
meta = {
+
description = "ZFS Filesystem Linux Kernel module";
+
longDescription = ''
+
ZFS is a filesystem that combines a logical volume manager with a
+
Copy-On-Write filesystem with data integrity detection and repair,
+
snapshotting, cloning, block devices, deduplication, and more.
+
'';
+
homepage = http://zfsonlinux.org/;
+
license = licenses.cddl;
+
platforms = platforms.linux;
+
maintainers = with maintainers; [ jcumming wizeman wkennington fpletz globin ];
+
};
+
}
+6 -12
pkgs/top-level/all-packages.nix
···
sch_cake = callPackage ../os-specific/linux/sch_cake { };
-
inherit (callPackage ../os-specific/linux/spl {
configFile = "kernel";
inherit kernel;
-
}) splStable splUnstable;
-
-
spl = splStable;
sysdig = callPackage ../os-specific/linux/sysdig {};
···
x86_energy_perf_policy = callPackage ../os-specific/linux/x86_energy_perf_policy { };
-
inherit (callPackage ../os-specific/linux/zfs {
configFile = "kernel";
inherit kernel spl;
-
}) zfsStable zfsUnstable;
-
-
zfs = zfsStable;
});
# The current default kernel / kernel modules.
···
statifier = callPackage ../os-specific/linux/statifier { };
-
inherit (callPackage ../os-specific/linux/spl {
configFile = "user";
-
}) splStable splUnstable;
-
-
spl = splStable;
sysdig = callPackage ../os-specific/linux/sysdig {
kernel = null;
···
sch_cake = callPackage ../os-specific/linux/sch_cake { };
+
spl = callPackage ../os-specific/linux/spl {
configFile = "kernel";
inherit kernel;
+
};
sysdig = callPackage ../os-specific/linux/sysdig {};
···
x86_energy_perf_policy = callPackage ../os-specific/linux/x86_energy_perf_policy { };
+
zfs = callPackage ../os-specific/linux/zfs {
configFile = "kernel";
inherit kernel spl;
+
};
});
# The current default kernel / kernel modules.
···
statifier = callPackage ../os-specific/linux/statifier { };
+
spl = callPackage ../os-specific/linux/spl {
configFile = "user";
+
};
sysdig = callPackage ../os-specific/linux/sysdig {
kernel = null;