summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Yao <ryao@gentoo.org>2012-06-17 17:03:12 +0000
committerRichard Yao <ryao@gentoo.org>2012-06-17 17:03:12 +0000
commit14b71c5fcf30f5abf0db976f53ac82370d62cb0d (patch)
tree31260cea9cf615bb0a514719f2d06962f4d128b3 /sys-kernel/spl
parentAdd ~alpha/~ia64/~s390/~sh/~sparc wrt #410239 (diff)
downloadhistorical-14b71c5fcf30f5abf0db976f53ac82370d62cb0d.tar.gz
historical-14b71c5fcf30f5abf0db976f53ac82370d62cb0d.tar.bz2
historical-14b71c5fcf30f5abf0db976f53ac82370d62cb0d.zip
Add patch to take advantage of kernel change from bug #416685
Package-Manager: portage-2.1.10.49/cvs/Linux x86_64
Diffstat (limited to 'sys-kernel/spl')
-rw-r--r--sys-kernel/spl/ChangeLog7
-rw-r--r--sys-kernel/spl/Manifest7
-rw-r--r--sys-kernel/spl/files/spl-0.6.0_rc9-detect-kernel-honors-gfp-flags.patch91
-rw-r--r--sys-kernel/spl/spl-0.6.0_rc9.ebuild10
-rw-r--r--sys-kernel/spl/spl-9999.ebuild10
5 files changed, 117 insertions, 8 deletions
diff --git a/sys-kernel/spl/ChangeLog b/sys-kernel/spl/ChangeLog
index 204fc3bec420..114891dab75a 100644
--- a/sys-kernel/spl/ChangeLog
+++ b/sys-kernel/spl/ChangeLog
@@ -1,6 +1,11 @@
# ChangeLog for sys-kernel/spl
# Copyright 1999-2012 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/sys-kernel/spl/ChangeLog,v 1.17 2012/06/17 16:40:27 ryao Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-kernel/spl/ChangeLog,v 1.18 2012/06/17 17:03:12 ryao Exp $
+
+ 17 Jun 2012; Richard Yao <ryao@gentoo.org>
+ +files/spl-0.6.0_rc9-detect-kernel-honors-gfp-flags.patch,
+ spl-0.6.0_rc9.ebuild, spl-9999.ebuild:
+ Add patch to take advantage of kernel change from bug #416685
17 Jun 2012; Richard Yao <ryao@gentoo.org> spl-0.6.0_rc9.ebuild,
spl-9999.ebuild:
diff --git a/sys-kernel/spl/Manifest b/sys-kernel/spl/Manifest
index 5f93497c1649..f0673f1d8616 100644
--- a/sys-kernel/spl/Manifest
+++ b/sys-kernel/spl/Manifest
@@ -1,5 +1,6 @@
+AUX spl-0.6.0_rc9-detect-kernel-honors-gfp-flags.patch 2896 RMD160 857c1dd3705dc6a19b1610e96b9fac3ae8f1de45 SHA1 2255e43e72aca0194eaca79f641e4aa10b635fda SHA256 811d8db0a99b26af03be5150eb9c6ac970933a34f022980d275a86bf4947aed1
DIST spl-0.6.0-rc9.tar.gz 449444 RMD160 50673f08253d5939f84dfe09e66c409b15d553a9 SHA1 c4c0ba92652f4635a3e0ffe62de68f9e4bd59a4c SHA256 9b1f7d0c94e3b70942f460d726180c3bed0b6b6cd71fc90d4d52dc6b218d17dd
-EBUILD spl-0.6.0_rc9.ebuild 1946 RMD160 a112ff3644a48853c17dc501a80aee5bb2e91303 SHA1 2a2748042bd6fbee45db20f253311d6b5f833266 SHA256 cad861cf1a01494f30f6045be6720092b88182dc3f5533d301b820bfce4b87ea
-EBUILD spl-9999.ebuild 1942 RMD160 286d2ee336918dc6c94b9fdd579336b75ea9ec4a SHA1 f7d5baa1d0294d8e65c70afb9c4481f854040e02 SHA256 f8f8e435eada4f68d4c0512a140874f5aea57f13a4c2fcb134bab53b0184184a
-MISC ChangeLog 2293 RMD160 3b18346f84e1bd6553c6910c1b4c80e70a8663bd SHA1 735de02b82ca7078936d2cc13082eed90cba9d97 SHA256 de7f8a7c031168b3e532bb576fd8bf10a241ecdd40d62a2859919da983e4fa10
+EBUILD spl-0.6.0_rc9.ebuild 2054 RMD160 fb091b4e54183a771a658bf849a2daa5bf292d23 SHA1 34f4931aab4ef8a1122b35de2eb6117c1a46baff SHA256 0104ecbffa609c51c6ed5c250a816bc7d4061c0938b3515e780106d0683c3b61
+EBUILD spl-9999.ebuild 2050 RMD160 ea8ffc4ba84057626ac34dc17675a3b3f0ed36f2 SHA1 b458cded1b5946fa3a9e9fa293571344b1f2afe1 SHA256 fbdf141cf4c34137eda7d288b733d3011b10b7d60972fa2b6736734ac49d0528
+MISC ChangeLog 2505 RMD160 ed217480b00ba01050565897673d68961ff57e69 SHA1 2ec5a99077d3cbb66b08e508ef243f9acfd712ba SHA256 b666b10597926b02f6372d13335a380002252f02cd7b0c529bf48bd26d047a7a
MISC metadata.xml 228 RMD160 7f4566d402fa232a1d2bb22589d7fe8cc72a241c SHA1 9a2f59b4e342ac0f1e064255f59b0bdec32ab1a9 SHA256 a317cd066ed83c5b5acf9d49869cb2f153499bb90cee389334bee9781534f5e8
diff --git a/sys-kernel/spl/files/spl-0.6.0_rc9-detect-kernel-honors-gfp-flags.patch b/sys-kernel/spl/files/spl-0.6.0_rc9-detect-kernel-honors-gfp-flags.patch
new file mode 100644
index 000000000000..ac10de7a8f17
--- /dev/null
+++ b/sys-kernel/spl/files/spl-0.6.0_rc9-detect-kernel-honors-gfp-flags.patch
@@ -0,0 +1,91 @@
+From 35f75553b720037eb7ef6ac9954c14f7d9c1b4e5 Mon Sep 17 00:00:00 2001
+From: Richard Yao <ryao@cs.stonybrook.edu>
+Date: Wed, 6 Jun 2012 22:38:12 -0400
+Subject: [PATCH] Detect kernels that honor gfp flags passed to vmalloc()
+
+zfsonlinux/spl@2092cf68d89a51eb0d6193aeadabb579dfc4b4a0 used PF_MEMALLOC
+to workaround a bug in the Linux kernel where allocations did not honor
+the gfp flags passed to vmalloc(). Unfortunately, PF_MEMALLOC has the
+side effect of permitting allocations to allocate pages outside of
+ZONE_NORMAL. This has been observed to result in the depletion of
+ZONE_DMA32 on Gentoo Linux. A kernel patch is available in the Gentoo
+bug tracker for this issue:
+
+https://bugs.gentoo.org/show_bug.cgi?id=416685
+
+This negates any benefit PF_MEMALLOC provides, so we introduce an
+autotools check to disable the use of PF_MEMALLOC on systems with
+patched kernels.
+
+Signed-off-by: Richard Yao <ryao@cs.stonybrook.edu>
+---
+ config/spl-build.m4 | 26 ++++++++++++++++++++++++++
+ module/spl/spl-kmem.c | 4 ++++
+ 2 files changed, 30 insertions(+)
+
+diff --git a/config/spl-build.m4 b/config/spl-build.m4
+index 6605b82..29c7ae4 100644
+--- a/config/spl-build.m4
++++ b/config/spl-build.m4
+@@ -87,6 +87,7 @@ AC_DEFUN([SPL_AC_CONFIG_KERNEL], [
+ SPL_AC_2ARGS_ZLIB_DEFLATE_WORKSPACESIZE
+ SPL_AC_SHRINK_CONTROL_STRUCT
+ SPL_AC_RWSEM_SPINLOCK_IS_RAW
++ SPL_AC_PMD_ALLOC_WITH_MASK
+ ])
+
+ AC_DEFUN([SPL_AC_MODULE_SYMVERS], [
+@@ -2056,3 +2057,28 @@ AC_DEFUN([SPL_AC_RWSEM_SPINLOCK_IS_RAW], [
+ ])
+ EXTRA_KCFLAGS="$tmp_flags"
+ ])
++
++dnl #
++dnl # 2.6.20 API change,
++dnl # INIT_WORK use 2 args and not store data inside
++dnl #
++AC_DEFUN([SPL_AC_PMD_ALLOC_WITH_MASK],
++ [AC_MSG_CHECKING([whether pmd_alloc_with_mask exists])
++ SPL_LINUX_TRY_COMPILE([
++ #define CONFIG_MMU
++ #undef RCH_HAS_4LEVEL_HACK
++ #include <linux/mm.h>
++ ],[
++ struct mm_struct init_mm;
++ pud_t pud;
++ unsigned long addr;
++ gfp_t gfp_mask;
++ pmd_alloc_with_mask(&init_mm, &pud, addr, gfp_mask);
++ ],[
++ AC_MSG_RESULT(yes)
++ AC_DEFINE(HAVE_PMD_ALLOC_WITH_MASK, 1,
++ [pmd_alloc_with_mask exists])
++ ],[
++ AC_MSG_RESULT(no)
++ ])
++])
+diff --git a/module/spl/spl-kmem.c b/module/spl/spl-kmem.c
+index e1d74d3..c640779 100644
+--- a/module/spl/spl-kmem.c
++++ b/module/spl/spl-kmem.c
+@@ -843,6 +843,9 @@ static int spl_cache_flush(spl_kmem_cache_t *skc,
+ if (skc->skc_flags & KMC_KMEM) {
+ ptr = (void *)__get_free_pages(flags, get_order(size));
+ } else {
++#ifdef HAVE_PMD_ALLOC_WITH_MASK
++ ptr = __vmalloc(size, flags|__GFP_HIGHMEM, PAGE_KERNEL);
++#else
+ /*
+ * As part of vmalloc() an __pte_alloc_kernel() allocation
+ * may occur. This internal allocation does not honor the
+@@ -866,6 +869,7 @@ static int spl_cache_flush(spl_kmem_cache_t *skc,
+ } else {
+ ptr = __vmalloc(size, flags|__GFP_HIGHMEM, PAGE_KERNEL);
+ }
++#endif
+ }
+
+ /* Resulting allocated memory will be page aligned */
+--
+1.7.10
+
diff --git a/sys-kernel/spl/spl-0.6.0_rc9.ebuild b/sys-kernel/spl/spl-0.6.0_rc9.ebuild
index 835ac02feb35..1aaf31c2b1bf 100644
--- a/sys-kernel/spl/spl-0.6.0_rc9.ebuild
+++ b/sys-kernel/spl/spl-0.6.0_rc9.ebuild
@@ -1,6 +1,6 @@
# Copyright 1999-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-kernel/spl/spl-0.6.0_rc9.ebuild,v 1.2 2012/06/17 16:40:27 ryao Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-kernel/spl/spl-0.6.0_rc9.ebuild,v 1.3 2012/06/17 17:03:12 ryao Exp $
EAPI="4"
AUTOTOOLS_AUTORECONF="1"
@@ -11,7 +11,7 @@ if [[ ${PV} == "9999" ]] ; then
inherit git-2
EGIT_REPO_URI="git://github.com/zfsonlinux/${PN}.git"
else
- inherit versionator
+ inherit eutils versionator
MY_PV=$(replace_version_separator 3 '-')
SRC_URI="https://github.com/downloads/zfsonlinux/${PN}/${PN}-${MY_PV}.tar.gz"
S="${WORKDIR}/${PN}-${MY_PV}"
@@ -48,6 +48,12 @@ pkg_setup() {
src_prepare() {
# Workaround for hard coded path
sed -i "s|/sbin/lsmod|/bin/lsmod|" scripts/check.sh || die
+
+ if [ ${PV} != "9999" ]
+ then
+ epatch "${FILESDIR}/${P}-detect-kernel-honors-gfp-flags.patch"
+ fi
+
autotools-utils_src_prepare
}
diff --git a/sys-kernel/spl/spl-9999.ebuild b/sys-kernel/spl/spl-9999.ebuild
index 334187b6c7f1..3154ff0c2703 100644
--- a/sys-kernel/spl/spl-9999.ebuild
+++ b/sys-kernel/spl/spl-9999.ebuild
@@ -1,6 +1,6 @@
# Copyright 1999-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-kernel/spl/spl-9999.ebuild,v 1.16 2012/06/17 16:40:27 ryao Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-kernel/spl/spl-9999.ebuild,v 1.17 2012/06/17 17:03:12 ryao Exp $
EAPI="4"
AUTOTOOLS_AUTORECONF="1"
@@ -11,7 +11,7 @@ if [[ ${PV} == "9999" ]] ; then
inherit git-2
EGIT_REPO_URI="git://github.com/zfsonlinux/${PN}.git"
else
- inherit versionator
+ inherit eutils versionator
MY_PV=$(replace_version_separator 3 '-')
SRC_URI="https://github.com/downloads/zfsonlinux/${PN}/${PN}-${MY_PV}.tar.gz"
S="${WORKDIR}/${PN}-${MY_PV}"
@@ -48,6 +48,12 @@ pkg_setup() {
src_prepare() {
# Workaround for hard coded path
sed -i "s|/sbin/lsmod|/bin/lsmod|" scripts/check.sh || die
+
+ if [ ${PV} != "9999" ]
+ then
+ epatch "${FILESDIR}/${P}-detect-kernel-honors-gfp-flags.patch"
+ fi
+
autotools-utils_src_prepare
}