spl: Update git
This commit is contained in:
parent
ab18f1509a
commit
a47b064595
@ -1,14 +1,15 @@
|
||||
{ stdenv, fetchgit, kernel, perl, autoconf, automake, libtool, coreutils, gawk }:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "spl-0.6.3-${kernel.version}";
|
||||
name = "spl-0.6.4-${kernel.version}";
|
||||
|
||||
src = fetchgit {
|
||||
url = git://github.com/zfsonlinux/spl.git;
|
||||
rev = "31cb5383bff0fddc5058973e32a6f2c446d45e59";
|
||||
sha256 = "0mcivbddms8kbapbs9x6achqyvh5i6h1rd2b3jm8g5yjn0flc5gl";
|
||||
rev = "a3c1eb77721a0d511b4fe7111bb2314686570c4b";
|
||||
sha256 = "050qvaw45rxlfwm3dxlxw89p3d3hcnkls6k1s4anlzb4qz5x5ph9";
|
||||
};
|
||||
|
||||
patches = [ ./install_prefix.patch ./const.patch ./kernel-3.16.patch ./kernel-3.17.patch ];
|
||||
patches = [ ./const.patch ./install_prefix-git.patch ];
|
||||
|
||||
buildInputs = [ perl autoconf automake libtool ];
|
||||
|
||||
@ -23,10 +24,10 @@ stdenv.mkDerivation {
|
||||
substituteInPlace ./module/splat/splat-linux.c --replace "PATH=/sbin:/usr/sbin:/bin:/usr/bin" "PATH=${coreutils}:/bin"
|
||||
'';
|
||||
|
||||
configureFlags = ''
|
||||
--with-linux=${kernel.dev}/lib/modules/${kernel.modDirVersion}/source
|
||||
--with-linux-obj=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build
|
||||
'';
|
||||
configureFlags = [
|
||||
"--with-linux=${kernel.dev}/lib/modules/${kernel.modDirVersion}/source"
|
||||
"--with-linux-obj=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
|
||||
];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
|
173
pkgs/os-specific/linux/spl/install_prefix-git.patch
Normal file
173
pkgs/os-specific/linux/spl/install_prefix-git.patch
Normal file
@ -0,0 +1,173 @@
|
||||
diff --git a/Makefile.am b/Makefile.am
|
||||
index 89af931..674420c 100644
|
||||
--- a/Makefile.am
|
||||
+++ b/Makefile.am
|
||||
@@ -12,10 +12,10 @@ endif
|
||||
if CONFIG_KERNEL
|
||||
SUBDIRS += module
|
||||
|
||||
-extradir = @prefix@/src/spl-$(VERSION)
|
||||
+extradir = @prefix@/libexec/spl
|
||||
extra_HEADERS = spl.release.in spl_config.h.in
|
||||
|
||||
-kerneldir = @prefix@/src/spl-$(VERSION)/$(LINUX_VERSION)
|
||||
+kerneldir = @prefix@/libexec/spl/$(LINUX_VERSION)
|
||||
nodist_kernel_HEADERS = spl.release spl_config.h module/$(LINUX_SYMBOLS)
|
||||
endif
|
||||
|
||||
diff --git a/include/Makefile.am b/include/Makefile.am
|
||||
index 3200222..4a47aaa 100644
|
||||
--- a/include/Makefile.am
|
||||
+++ b/include/Makefile.am
|
||||
@@ -13,6 +13,6 @@ USER_H =
|
||||
EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H)
|
||||
|
||||
if CONFIG_KERNEL
|
||||
-kerneldir = @prefix@/src/spl-$(VERSION)/include
|
||||
+kerneldir = @prefix@/libexec/spl/include
|
||||
kernel_HEADERS = $(KERNEL_H)
|
||||
endif
|
||||
diff --git a/include/fs/Makefile.am b/include/fs/Makefile.am
|
||||
index e0da4b3..d6d7af0 100644
|
||||
--- a/include/fs/Makefile.am
|
||||
+++ b/include/fs/Makefile.am
|
||||
@@ -8,6 +8,6 @@ USER_H =
|
||||
EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H)
|
||||
|
||||
if CONFIG_KERNEL
|
||||
-kerneldir = @prefix@/src/spl-$(VERSION)/include/fs
|
||||
+kerneldir = @prefix@/libexec/spl/include/fs
|
||||
kernel_HEADERS = $(KERNEL_H)
|
||||
endif
|
||||
diff --git a/include/linux/Makefile.am b/include/linux/Makefile.am
|
||||
index 1cca44a..e0d843b 100644
|
||||
--- a/include/linux/Makefile.am
|
||||
+++ b/include/linux/Makefile.am
|
||||
@@ -19,6 +19,6 @@ USER_H =
|
||||
EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H)
|
||||
|
||||
if CONFIG_KERNEL
|
||||
-kerneldir = @prefix@/src/spl-$(VERSION)/include/linux
|
||||
+kerneldir = @prefix@/libexec/spl/include/linux
|
||||
kernel_HEADERS = $(KERNEL_H)
|
||||
endif
|
||||
diff --git a/include/rpc/Makefile.am b/include/rpc/Makefile.am
|
||||
index cfc8246..4fbd33d 100644
|
||||
--- a/include/rpc/Makefile.am
|
||||
+++ b/include/rpc/Makefile.am
|
||||
@@ -9,6 +9,6 @@ USER_H =
|
||||
EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H)
|
||||
|
||||
if CONFIG_KERNEL
|
||||
-kerneldir = @prefix@/src/spl-$(VERSION)/include/rpc
|
||||
+kerneldir = @prefix@/libexec/spl/include/rpc
|
||||
kernel_HEADERS = $(KERNEL_H)
|
||||
endif
|
||||
diff --git a/include/sharefs/Makefile.am b/include/sharefs/Makefile.am
|
||||
index 10e7093..febecdf 100644
|
||||
--- a/include/sharefs/Makefile.am
|
||||
+++ b/include/sharefs/Makefile.am
|
||||
@@ -8,6 +8,6 @@ USER_H =
|
||||
EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H)
|
||||
|
||||
if CONFIG_KERNEL
|
||||
-kerneldir = @prefix@/src/spl-$(VERSION)/include/sharefs
|
||||
+kerneldir = @prefix@/libexec/spl/include/sharefs
|
||||
kernel_HEADERS = $(KERNEL_H)
|
||||
endif
|
||||
diff --git a/include/sys/Makefile.am b/include/sys/Makefile.am
|
||||
index 2d21c57..3958cfd 100644
|
||||
--- a/include/sys/Makefile.am
|
||||
+++ b/include/sys/Makefile.am
|
||||
@@ -104,7 +104,7 @@ USER_H =
|
||||
EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H)
|
||||
|
||||
if CONFIG_KERNEL
|
||||
-kerneldir = @prefix@/src/spl-$(VERSION)/include/sys
|
||||
+kerneldir = @prefix@/libexec/spl/include/sys
|
||||
kernel_HEADERS = $(KERNEL_H)
|
||||
endif
|
||||
|
||||
diff --git a/include/sys/fm/Makefile.am b/include/sys/fm/Makefile.am
|
||||
index 2821cbe..a84ce8e 100644
|
||||
--- a/include/sys/fm/Makefile.am
|
||||
+++ b/include/sys/fm/Makefile.am
|
||||
@@ -9,6 +9,6 @@ USER_H =
|
||||
EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H)
|
||||
|
||||
if CONFIG_KERNEL
|
||||
-kerneldir = @prefix@/src/spl-$(VERSION)/include/sys/fm
|
||||
+kerneldir = @prefix@/libexec/spl/include/sys/fm
|
||||
kernel_HEADERS = $(KERNEL_H)
|
||||
endif
|
||||
diff --git a/include/sys/fs/Makefile.am b/include/sys/fs/Makefile.am
|
||||
index 581083e..0c35fb7 100644
|
||||
--- a/include/sys/fs/Makefile.am
|
||||
+++ b/include/sys/fs/Makefile.am
|
||||
@@ -8,6 +8,6 @@ USER_H =
|
||||
EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H)
|
||||
|
||||
if CONFIG_KERNEL
|
||||
-kerneldir = @prefix@/src/spl-$(VERSION)/include/sys/fs
|
||||
+kerneldir = @prefix@/libexec/spl/include/sys/fs
|
||||
kernel_HEADERS = $(KERNEL_H)
|
||||
endif
|
||||
diff --git a/include/sys/sysevent/Makefile.am b/include/sys/sysevent/Makefile.am
|
||||
index 63d9af3..de1aa18 100644
|
||||
--- a/include/sys/sysevent/Makefile.am
|
||||
+++ b/include/sys/sysevent/Makefile.am
|
||||
@@ -8,6 +8,6 @@ USER_H =
|
||||
EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H)
|
||||
|
||||
if CONFIG_KERNEL
|
||||
-kerneldir = @prefix@/src/spl-$(VERSION)/include/sys/sysevent
|
||||
+kerneldir = @prefix@/libexec/spl/include/sys/sysevent
|
||||
kernel_HEADERS = $(KERNEL_H)
|
||||
endif
|
||||
diff --git a/include/util/Makefile.am b/include/util/Makefile.am
|
||||
index b721b50..cbb9a05 100644
|
||||
--- a/include/util/Makefile.am
|
||||
+++ b/include/util/Makefile.am
|
||||
@@ -9,6 +9,6 @@ USER_H =
|
||||
EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H)
|
||||
|
||||
if CONFIG_KERNEL
|
||||
-kerneldir = @prefix@/src/spl-$(VERSION)/include/util
|
||||
+kerneldir = @prefix@/libexec/spl/include/util
|
||||
kernel_HEADERS = $(KERNEL_H)
|
||||
endif
|
||||
diff --git a/include/vm/Makefile.am b/include/vm/Makefile.am
|
||||
index 7faab0a..8148b3d 100644
|
||||
--- a/include/vm/Makefile.am
|
||||
+++ b/include/vm/Makefile.am
|
||||
@@ -10,6 +10,6 @@ USER_H =
|
||||
EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H)
|
||||
|
||||
if CONFIG_KERNEL
|
||||
-kerneldir = @prefix@/src/spl-$(VERSION)/include/vm
|
||||
+kerneldir = @prefix@/libexec/spl/include/vm
|
||||
kernel_HEADERS = $(KERNEL_H)
|
||||
endif
|
||||
diff --git a/module/Makefile.in b/module/Makefile.in
|
||||
index 41c1010..3141397 100644
|
||||
--- a/module/Makefile.in
|
||||
+++ b/module/Makefile.in
|
||||
@@ -21,15 +21,15 @@ clean:
|
||||
modules_install:
|
||||
@# Install the kernel modules
|
||||
$(MAKE) -C @LINUX_OBJ@ SUBDIRS=`pwd` $@ \
|
||||
- INSTALL_MOD_PATH=$(DESTDIR)$(INSTALL_MOD_PATH) \
|
||||
+ INSTALL_MOD_PATH=@prefix@/$(INSTALL_MOD_PATH) \
|
||||
INSTALL_MOD_DIR=$(INSTALL_MOD_DIR) \
|
||||
KERNELRELEASE=@LINUX_VERSION@
|
||||
@# Remove extraneous build products when packaging
|
||||
- kmoddir=$(DESTDIR)$(INSTALL_MOD_PATH)/lib/modules/@LINUX_VERSION@; \
|
||||
+ kmoddir=@prefix@/$(INSTALL_MOD_PATH)/lib/modules/@LINUX_VERSION@; \
|
||||
if [ -n $$kmoddir ]; then \
|
||||
find $$kmoddir -name 'modules.*' | xargs $(RM); \
|
||||
fi
|
||||
- sysmap=$(DESTDIR)$(INSTALL_MOD_PATH)/boot/System.map-@LINUX_VERSION@; \
|
||||
+ sysmap=@prefix@/$(INSTALL_MOD_PATH)/boot/System.map-@LINUX_VERSION@; \
|
||||
if [ -f $$sysmap ]; then \
|
||||
depmod -ae -F $$sysmap @LINUX_VERSION@; \
|
||||
fi
|
@ -1,34 +0,0 @@
|
||||
From e3020723dc43af2bc22af0d68571a61daf9b44d0 Mon Sep 17 00:00:00 2001
|
||||
From: Turbo Fredriksson <turbo@bayour.com>
|
||||
Date: Sun, 14 Sep 2014 15:47:22 +0000
|
||||
Subject: [PATCH] Linux 3.16 compat: smp_mb__after_clear_bit()
|
||||
|
||||
The smp_mb__{before,after}_clear_bit functions have been renamed
|
||||
smp_mb__{before,after}_atomic. Rather than adding a compatibility
|
||||
function to handle this the code has been updated to use smp_wmb().
|
||||
|
||||
This has the advantage of being a stable functionally equivalent
|
||||
interface. On many architectures smp_mb__after_clear_bit() expands
|
||||
to smp_wmb(). Others might be able to do something slightly more
|
||||
efficient but this will be safe and correct on all of them.
|
||||
|
||||
Signed-off-by: Turbo Fredriksson <turbo@bayour.com>
|
||||
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
|
||||
Closes #386
|
||||
---
|
||||
module/spl/spl-kmem.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/module/spl/spl-kmem.c b/module/spl/spl-kmem.c
|
||||
index 6de513e..79954eb 100644
|
||||
--- a/module/spl/spl-kmem.c
|
||||
+++ b/module/spl/spl-kmem.c
|
||||
@@ -2365,7 +2365,7 @@ spl_kmem_cache_reap_now(spl_kmem_cache_t *skc, int count)
|
||||
|
||||
spl_slab_reclaim(skc, count, 1);
|
||||
clear_bit(KMC_BIT_REAPING, &skc->skc_flags);
|
||||
- smp_mb__after_clear_bit();
|
||||
+ smp_wmb();
|
||||
wake_up_bit(&skc->skc_flags, KMC_BIT_REAPING);
|
||||
out:
|
||||
atomic_dec(&skc->skc_ref);
|
@ -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);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user