diff options
author | Richard Yao <ryao@gentoo.org> | 2012-06-17 17:03:12 +0000 |
---|---|---|
committer | Richard Yao <ryao@gentoo.org> | 2012-06-17 17:03:12 +0000 |
commit | 14b71c5fcf30f5abf0db976f53ac82370d62cb0d (patch) | |
tree | 31260cea9cf615bb0a514719f2d06962f4d128b3 /sys-kernel/spl | |
parent | Add ~alpha/~ia64/~s390/~sh/~sparc wrt #410239 (diff) | |
download | historical-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/ChangeLog | 7 | ||||
-rw-r--r-- | sys-kernel/spl/Manifest | 7 | ||||
-rw-r--r-- | sys-kernel/spl/files/spl-0.6.0_rc9-detect-kernel-honors-gfp-flags.patch | 91 | ||||
-rw-r--r-- | sys-kernel/spl/spl-0.6.0_rc9.ebuild | 10 | ||||
-rw-r--r-- | sys-kernel/spl/spl-9999.ebuild | 10 |
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 } |