+++ /dev/null
-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);
-
+++ /dev/null
-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
+++ /dev/null
-# 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."
-}