summary refs log tree commit diff
path: root/pkgs/os-specific/linux/spl/kernel-3.17.patch
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/os-specific/linux/spl/kernel-3.17.patch')
-rw-r--r--pkgs/os-specific/linux/spl/kernel-3.17.patch175
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);
- 	}
-