diff options
Diffstat (limited to 'pkgs/os-specific/linux/spl/kernel-3.17.patch')
-rw-r--r-- | pkgs/os-specific/linux/spl/kernel-3.17.patch | 175 |
1 files changed, 0 insertions, 175 deletions
diff --git a/pkgs/os-specific/linux/spl/kernel-3.17.patch b/pkgs/os-specific/linux/spl/kernel-3.17.patch deleted file mode 100644 index f5ce2c8805d8..000000000000 --- a/pkgs/os-specific/linux/spl/kernel-3.17.patch +++ /dev/null @@ -1,175 +0,0 @@ -From 2fc44f66ec9b83069593d87cf311069458c0d5ae Mon Sep 17 00:00:00 2001 -From: Ned Bass <bass6@llnl.gov> -Date: Fri, 8 Aug 2014 17:41:22 -0700 -Subject: [PATCH] Linux 3.17 compat: remove wait_on_bit action function - -Linux kernel 3.17 removes the action function argument from -wait_on_bit(). Add autoconf test and compatibility macro to support -the new interface. - -The former "wait_on_bit" interface required an 'action' function to -be provided which does the actual waiting. There were over 20 such -functions in the kernel, many of them identical, though most cases -can be satisfied by one of just two functions: one which uses -io_schedule() and one which just uses schedule(). This API change -was made to consolidate all of those redundant wait functions. - -References: torvalds/linux@7431620 - -Signed-off-by: Ned Bass <bass6@llnl.gov> -Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> -Closes #378 ---- - config/spl-build.m4 | 26 ++++++++++++++++++++++++++ - include/linux/Makefile.am | 1 + - include/linux/wait_compat.h | 45 +++++++++++++++++++++++++++++++++++++++++++++ - include/sys/types.h | 1 + - module/spl/spl-kmem.c | 11 ++--------- - 5 files changed, 75 insertions(+), 9 deletions(-) - create mode 100644 include/linux/wait_compat.h - -diff --git a/config/spl-build.m4 b/config/spl-build.m4 -index eef5233..2514d8c 100644 ---- a/config/spl-build.m4 -+++ b/config/spl-build.m4 -@@ -94,6 +94,7 @@ AC_DEFUN([SPL_AC_CONFIG_KERNEL], [ - SPL_AC_2ARGS_VFS_GETATTR - SPL_AC_USLEEP_RANGE - SPL_AC_KMEM_CACHE_ALLOCFLAGS -+ SPL_AC_WAIT_ON_BIT - ]) - - AC_DEFUN([SPL_AC_MODULE_SYMVERS], [ -@@ -2570,3 +2571,28 @@ AC_DEFUN([SPL_AC_KMEM_CACHE_ALLOCFLAGS], [ - ]) - ]) - ]) -+ -+dnl # -+dnl # 3.17 API change, -+dnl # wait_on_bit() no longer requires an action argument. The former -+dnl # "wait_on_bit" interface required an 'action' function to be provided -+dnl # which does the actual waiting. There were over 20 such functions in the -+dnl # kernel, many of them identical, though most cases can be satisfied by one -+dnl # of just two functions: one which uses io_schedule() and one which just -+dnl # uses schedule(). This API change was made to consolidate all of those -+dnl # redundant wait functions. -+dnl # -+AC_DEFUN([SPL_AC_WAIT_ON_BIT], [ -+ AC_MSG_CHECKING([whether wait_on_bit() takes an action]) -+ SPL_LINUX_TRY_COMPILE([ -+ #include <linux/wait.h> -+ ],[ -+ int (*action)(void *) = NULL; -+ wait_on_bit(NULL, 0, action, 0); -+ ],[ -+ AC_MSG_RESULT(yes) -+ AC_DEFINE(HAVE_WAIT_ON_BIT_ACTION, 1, [yes]) -+ ],[ -+ AC_MSG_RESULT(no) -+ ]) -+]) -diff --git a/include/linux/Makefile.am b/include/linux/Makefile.am -index 59f2ec5..ec7023d 100644 ---- a/include/linux/Makefile.am -+++ b/include/linux/Makefile.am -@@ -17,6 +17,7 @@ KERNEL_H = \ - $(top_srcdir)/include/linux/sysctl_compat.h \ - $(top_srcdir)/include/linux/time_compat.h \ - $(top_srcdir)/include/linux/uaccess_compat.h \ -+ $(top_srcdir)/include/linux/wait_compat.h \ - $(top_srcdir)/include/linux/zlib_compat.h - - USER_H = -diff --git a/include/linux/wait_compat.h b/include/linux/wait_compat.h -new file mode 100644 -index 0000000..66f9a9a ---- /dev/null -+++ b/include/linux/wait_compat.h -@@ -0,0 +1,45 @@ -+/*****************************************************************************\ -+ * Copyright (C) 2007-2014 Lawrence Livermore National Security, LLC. -+ * Copyright (C) 2007 The Regents of the University of California. -+ * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). -+ * Written by Brian Behlendorf <behlendorf1@llnl.gov>. -+ * UCRL-CODE-235197 -+ * -+ * This file is part of the SPL, Solaris Porting Layer. -+ * For details, see <http://zfsonlinux.org/>. -+ * -+ * The SPL is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License as published by the -+ * Free Software Foundation; either version 2 of the License, or (at your -+ * option) any later version. -+ * -+ * The SPL is distributed in the hope that it will be useful, but WITHOUT -+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -+ * for more details. -+ * -+ * You should have received a copy of the GNU General Public License along -+ * with the SPL. If not, see <http://www.gnu.org/licenses/>. -+\*****************************************************************************/ -+ -+#ifndef _SPL_WAIT_COMPAT_H -+#define _SPL_WAIT_COMPAT_H -+ -+ -+#ifndef HAVE_WAIT_ON_BIT_ACTION -+# define spl_wait_on_bit(word, bit, mode) wait_on_bit(word, bit, mode) -+#else -+ -+static inline int -+spl_bit_wait(void *word) -+{ -+ schedule(); -+ return 0; -+} -+ -+#define spl_wait_on_bit(word, bit, mode) \ -+ wait_on_bit(word, bit, spl_bit_wait, mode) -+ -+#endif /* HAVE_WAIT_ON_BIT_ACTION */ -+ -+#endif /* SPL_WAIT_COMPAT_H */ -diff --git a/include/sys/types.h b/include/sys/types.h -index decb6bb..fcec0fa 100644 ---- a/include/sys/types.h -+++ b/include/sys/types.h -@@ -43,6 +43,7 @@ - #include <linux/zlib_compat.h> - #include <linux/mm_compat.h> - #include <linux/delay.h> -+#include <linux/wait_compat.h> - - #ifndef HAVE_UINTPTR_T - typedef unsigned long uintptr_t; -diff --git a/module/spl/spl-kmem.c b/module/spl/spl-kmem.c -index 0a9d775..6de513e 100644 ---- a/module/spl/spl-kmem.c -+++ b/module/spl/spl-kmem.c -@@ -1900,13 +1900,6 @@ spl_cache_grow_wait(spl_kmem_cache_t *skc) - return !test_bit(KMC_BIT_GROWING, &skc->skc_flags); - } - --static int --spl_cache_reclaim_wait(void *word) --{ -- schedule(); -- return 0; --} -- - /* - * No available objects on any slabs, create a new slab. Note that this - * functionality is disabled for KMC_SLAB caches which are backed by the -@@ -1928,8 +1921,8 @@ spl_cache_grow(spl_kmem_cache_t *skc, int flags, void **obj) - * then return so the local magazine can be rechecked for new objects. - */ - if (test_bit(KMC_BIT_REAPING, &skc->skc_flags)) { -- rc = wait_on_bit(&skc->skc_flags, KMC_BIT_REAPING, -- spl_cache_reclaim_wait, TASK_UNINTERRUPTIBLE); -+ rc = spl_wait_on_bit(&skc->skc_flags, KMC_BIT_REAPING, -+ TASK_UNINTERRUPTIBLE); - SRETURN(rc ? rc : -EAGAIN); - } - |