summaryrefslogtreecommitdiff
path: root/sys-fs
diff options
context:
space:
mode:
authorGeorgy Yakovlev <gyakovlev@gentoo.org>2019-05-29 15:12:55 -0700
committerGeorgy Yakovlev <gyakovlev@gentoo.org>2019-05-29 15:14:29 -0700
commitabf3bbd8488b7eb5177cac9898ccc8ea6d963429 (patch)
treec52ba26e43968af938aed5b95af1501cced8b2c9 /sys-fs
parentprofiles: riscv rv64gc/lp64 remove unnecessary cflags (diff)
downloadgentoo-abf3bbd8488b7eb5177cac9898ccc8ea6d963429.tar.gz
gentoo-abf3bbd8488b7eb5177cac9898ccc8ea6d963429.tar.bz2
gentoo-abf3bbd8488b7eb5177cac9898ccc8ea6d963429.zip
sys-fs/zfs-kmod: revbump 0.8.0 with critical patches
Issue: https://github.com/zfsonlinux/zfs/issues/8816 Issue: https://github.com/zfsonlinux/zfs/issues/8778 Bug: https://bugs.gentoo.org/635002 Package-Manager: Portage-2.3.67, Repoman-2.3.12 Signed-off-by: Georgy Yakovlev <gyakovlev@gentoo.org>
Diffstat (limited to 'sys-fs')
-rw-r--r--sys-fs/zfs-kmod/files/0.8.0_Fix_integer_overflow_in_get_next_chunk.patch32
-rw-r--r--sys-fs/zfs-kmod/files/0.8.0_revert_Report_holes.patch53
-rw-r--r--sys-fs/zfs-kmod/zfs-kmod-0.8.0-r1.ebuild178
3 files changed, 263 insertions, 0 deletions
diff --git a/sys-fs/zfs-kmod/files/0.8.0_Fix_integer_overflow_in_get_next_chunk.patch b/sys-fs/zfs-kmod/files/0.8.0_Fix_integer_overflow_in_get_next_chunk.patch
new file mode 100644
index 000000000000..0042bfdc99c4
--- /dev/null
+++ b/sys-fs/zfs-kmod/files/0.8.0_Fix_integer_overflow_in_get_next_chunk.patch
@@ -0,0 +1,32 @@
+From ec4afd27f198d93a7bd32a05cb288708ba754ada Mon Sep 17 00:00:00 2001
+From: madz <olivier.mazouffre@ims-bordeaux.fr>
+Date: Wed, 29 May 2019 19:17:25 +0200
+Subject: [PATCH] Fix integer overflow in get_next_chunk()
+
+dn->dn_datablksz type is uint32_t and need to be casted to uint64_t
+to avoid an overflow when the record size is greater than 4 MiB.
+
+Reviewed-by: Tom Caputi <tcaputi@datto.com>
+Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
+Signed-off-by: Olivier Mazouffre <olivier.mazouffre@ims-bordeaux.fr>
+Closes #8778
+Closes #8797
+---
+ module/zfs/dmu.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/module/zfs/dmu.c b/module/zfs/dmu.c
+index 1697a632078..a283b062238 100644
+--- a/module/zfs/dmu.c
++++ b/module/zfs/dmu.c
+@@ -719,8 +719,8 @@ get_next_chunk(dnode_t *dn, uint64_t *start, uint64_t minimum, uint64_t *l1blks)
+ uint64_t blks;
+ uint64_t maxblks = DMU_MAX_ACCESS >> (dn->dn_indblkshift + 1);
+ /* bytes of data covered by a level-1 indirect block */
+- uint64_t iblkrange =
+- dn->dn_datablksz * EPB(dn->dn_indblkshift, SPA_BLKPTRSHIFT);
++ uint64_t iblkrange = (uint64_t)dn->dn_datablksz *
++ EPB(dn->dn_indblkshift, SPA_BLKPTRSHIFT);
+
+ ASSERT3U(minimum, <=, *start);
+
diff --git a/sys-fs/zfs-kmod/files/0.8.0_revert_Report_holes.patch b/sys-fs/zfs-kmod/files/0.8.0_revert_Report_holes.patch
new file mode 100644
index 000000000000..f8d67ccc7cef
--- /dev/null
+++ b/sys-fs/zfs-kmod/files/0.8.0_revert_Report_holes.patch
@@ -0,0 +1,53 @@
+From: Georgy Yakovlev <gyakovlev@gentoo.org>
+Date: Wed, 29 May 2019 14:38:15 -0700
+Subject: Revert [PATCH] Report holes when there are only metadata changes
+
+This reverts ec4f9b8f30391a3fb46c8d4a31c2dc9250dca1bb
+Issue: https://github.com/zfsonlinux/zfs/issues/8816
+Bug: https://bugs.gentoo.org/635002
+---
+--- b/module/zfs/dmu.c
++++ a/module/zfs/dmu.c
+@@ -2366,39 +2366,14 @@
+ return (err);
+
+ /*
++ * Check if dnode is dirty
+- * Check if there are dirty data blocks or frees which have not been
+- * synced. Dirty spill and bonus blocks which are external to the
+- * object can ignored when reporting holes.
+ */
+- mutex_enter(&dn->dn_mtx);
+ for (i = 0; i < TXG_SIZE; i++) {
+ if (multilist_link_active(&dn->dn_dirty_link[i])) {
++ clean = B_FALSE;
++ break;
+-
+- if (dn->dn_free_ranges[i] != NULL) {
+- clean = B_FALSE;
+- break;
+- }
+-
+- list_t *list = &dn->dn_dirty_records[i];
+- dbuf_dirty_record_t *dr;
+-
+- for (dr = list_head(list); dr != NULL;
+- dr = list_next(list, dr)) {
+- dmu_buf_impl_t *db = dr->dr_dbuf;
+-
+- if (db->db_blkid == DMU_SPILL_BLKID ||
+- db->db_blkid == DMU_BONUS_BLKID)
+- continue;
+-
+- clean = B_FALSE;
+- break;
+- }
+ }
+-
+- if (clean == B_FALSE)
+- break;
+ }
+- mutex_exit(&dn->dn_mtx);
+
+ /*
+ * If compatibility option is on, sync any current changes before
diff --git a/sys-fs/zfs-kmod/zfs-kmod-0.8.0-r1.ebuild b/sys-fs/zfs-kmod/zfs-kmod-0.8.0-r1.ebuild
new file mode 100644
index 000000000000..0108a7a9b3b7
--- /dev/null
+++ b/sys-fs/zfs-kmod/zfs-kmod-0.8.0-r1.ebuild
@@ -0,0 +1,178 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit flag-o-matic linux-info linux-mod toolchain-funcs
+
+DESCRIPTION="Linux ZFS kernel module for sys-fs/zfs"
+HOMEPAGE="https://zfsonlinux.org/"
+
+if [[ ${PV} == "9999" ]]; then
+ inherit autotools git-r3
+ EGIT_REPO_URI="https://github.com/zfsonlinux/zfs.git"
+else
+ SRC_URI="https://github.com/zfsonlinux/zfs/releases/download/zfs-${PV}/zfs-${PV}.tar.gz"
+ KEYWORDS="~amd64"
+ S="${WORKDIR}/zfs-${PV}"
+ ZFS_KERNEL_COMPAT="5.1"
+fi
+
+LICENSE="CDDL debug? ( GPL-2+ )"
+SLOT="0"
+IUSE="custom-cflags debug +rootfs"
+
+DEPEND=""
+
+RDEPEND="${DEPEND}
+ !sys-fs/zfs-fuse
+ !sys-kernel/spl
+"
+
+BDEPEND="
+ dev-lang/perl
+ virtual/awk
+"
+
+RESTRICT="debug? ( strip ) test"
+
+DOCS=( AUTHORS COPYRIGHT META README.md )
+
+PATCHES=(
+ "${FILESDIR}"/0.8.0_revert_Report_holes.patch
+ "${FILESDIR}"/0.8.0_Fix_integer_overflow_in_get_next_chunk.patch
+)
+
+pkg_setup() {
+ linux-info_pkg_setup
+
+ CONFIG_CHECK="
+ !DEBUG_LOCK_ALLOC
+ EFI_PARTITION
+ MODULES
+ !PAX_KERNEXEC_PLUGIN_METHOD_OR
+ !TRIM_UNUSED_KSYMS
+ ZLIB_DEFLATE
+ ZLIB_INFLATE
+ "
+
+ use debug && CONFIG_CHECK="${CONFIG_CHECK}
+ FRAME_POINTER
+ DEBUG_INFO
+ !DEBUG_INFO_REDUCED
+ "
+
+ use rootfs && \
+ CONFIG_CHECK="${CONFIG_CHECK}
+ BLK_DEV_INITRD
+ DEVTMPFS
+ "
+
+ kernel_is -lt 5 && CONFIG_CHECK="${CONFIG_CHECK} IOSCHED_NOOP"
+
+ kernel_is -ge 2 6 32 || die "Linux 2.6.32 or newer required"
+
+ if [[ ${PV} != "9999" ]]; then
+ local kv_major_max kv_minor_max zcompat
+ zcompat="${ZFS_KERNEL_COMPAT_OVERRIDE:-${ZFS_KERNEL_COMPAT}}"
+ kv_major_max="${zcompat%%.*}"
+ zcompat="${zcompat#*.}"
+ kv_minor_max="${zcompat%%.*}"
+ kernel_is -le "${kv_major_max}" "${kv_minor_max}" || die \
+ "Linux ${kv_major_max}.${kv_minor_max} is the latest supported version"
+ fi
+
+ check_extra_config
+}
+
+src_prepare() {
+ default
+
+ if [[ ${PV} == "9999" ]]; then
+ eautoreconf
+ else
+ # Set module revision number
+ sed -i "s/\(Release:\)\(.*\)1/\1\2${PR}-gentoo/" META || die "Could not set Gentoo release"
+ fi
+
+ # Remove GPLv2-licensed ZPIOS unless we are debugging
+ use debug || sed -e 's/^subdir-m += zpios$//' -i module/Makefile.in
+}
+
+src_configure() {
+ set_arch_to_kernel
+
+ use custom-cflags || strip-flags
+
+ filter-ldflags -Wl,*
+
+ local myconf=(
+ --bindir="${EPREFIX}/bin"
+ --sbindir="${EPREFIX}/sbin"
+ --with-config=kernel
+ --with-linux="${KV_DIR}"
+ --with-linux-obj="${KV_OUT_DIR}"
+ $(use_enable debug)
+ )
+
+ econf "${myconf[@]}"
+}
+
+src_compile() {
+ set_arch_to_kernel
+
+ myemakeargs=( V=1 )
+
+ emake "${myemakeargs[@]}"
+}
+
+src_install() {
+ set_arch_to_kernel
+
+ myemakeargs+=(
+ DEPMOD="/bin/true"
+ DESTDIR="${D}"
+ INSTALL_MOD_PATH="${INSTALL_MOD_PATH:-$EROOT}"
+ )
+
+ emake "${myemakeargs[@]}" install
+
+ einstalldocs
+}
+
+pkg_postinst() {
+ linux-mod_pkg_postinst
+
+ # Remove old modules
+ if [[ -d "${EROOT}/lib/modules/${KV_FULL}/addon/zfs" ]]; then
+ ewarn "${PN} now installs modules in ${EROOT}/lib/modules/${KV_FULL}/extra/zfs"
+ ewarn "Old modules were detected in ${EROOT}/lib/modules/${KV_FULL}/addon/zfs"
+ ewarn "Automatically removing old modules to avoid problems."
+ rm -r "${EROOT}/lib/modules/${KV_FULL}/addon/zfs" || die "Cannot remove modules"
+ rmdir --ignore-fail-on-non-empty "${EROOT}/lib/modules/${KV_FULL}/addon"
+ fi
+
+ if use x86 || use arm; then
+ ewarn "32-bit kernels will likely require increasing vmalloc to"
+ ewarn "at least 256M and decreasing zfs_arc_max to some value less than that."
+ fi
+
+ ewarn "This version of ZFSOnLinux includes support for new feature flags"
+ ewarn "that are incompatible with previous versions. GRUB2 support for"
+ ewarn "/boot with the new feature flags is not yet available."
+ ewarn "Do *NOT* upgrade root pools to use the new feature flags."
+ ewarn "Any new pools will be created with the new feature flags by default"
+ ewarn "and will not be compatible with older versions of ZFSOnLinux. To"
+ ewarn "create a newpool that is backward compatible wih GRUB2, use "
+ ewarn
+ ewarn "zpool create -d -o feature@async_destroy=enabled "
+ ewarn " -o feature@empty_bpobj=enabled -o feature@lz4_compress=enabled"
+ ewarn " -o feature@spacemap_histogram=enabled"
+ ewarn " -o feature@enabled_txg=enabled "
+ ewarn " -o feature@extensible_dataset=enabled -o feature@bookmarks=enabled"
+ ewarn " ..."
+ ewarn
+ ewarn "GRUB2 support will be updated as soon as either the GRUB2"
+ ewarn "developers do a tag or the Gentoo developers find time to backport"
+ ewarn "support from GRUB2 HEAD."
+}