summaryrefslogtreecommitdiff
path: root/sys-fs/zfs-kmod/files
diff options
context:
space:
mode:
Diffstat (limited to 'sys-fs/zfs-kmod/files')
-rw-r--r--sys-fs/zfs-kmod/files/zfs-kmod-0.6.0_rc13-fix-invisible-snapshots.patch39
-rw-r--r--sys-fs/zfs-kmod/files/zfs-kmod-0.6.0_rc13-fix-recursive-reader.patch40
-rw-r--r--sys-fs/zfs-kmod/files/zfs-kmod-0.6.0_rc13-gcc-4.7-compat.patch51
-rw-r--r--sys-fs/zfs-kmod/files/zfs-kmod-0.6.0_rc14-cast-const-for-32bit-compatibility.patch36
-rw-r--r--sys-fs/zfs-kmod/files/zfs-kmod-0.6.0_rc14-flush-properly.patch42
-rw-r--r--sys-fs/zfs-kmod/files/zfs-kmod-0.6.0_rc14-improved-autotools-checks.patch105
-rw-r--r--sys-fs/zfs-kmod/files/zfs-kmod-0.6.0_rc14-improved-hardened-support.patch473
-rw-r--r--sys-fs/zfs-kmod/files/zfs-kmod-0.6.0_rc14-linux-3.9-compat.patch32
-rw-r--r--sys-fs/zfs-kmod/files/zfs-kmod-0.6.0_rc14-vfs-name-length-compatibility.patch36
-rw-r--r--sys-fs/zfs-kmod/files/zfs-kmod-0.6.0_rc14-zfs_arc_memory_throttle_disable.patch41
-rw-r--r--sys-fs/zfs-kmod/files/zfs-kmod-0.6.1-fix-arc-read-panic.patch42
-rw-r--r--sys-fs/zfs-kmod/files/zfs-kmod-0.6.1-fix-getdents.patch32
-rw-r--r--sys-fs/zfs-kmod/files/zfs-kmod-0.6.1-fix-txg_quiesce-deadlock.patch73
-rw-r--r--sys-fs/zfs-kmod/files/zfs-kmod-0.6.1-fix-xattr-behavior-1.patch50
-rw-r--r--sys-fs/zfs-kmod/files/zfs-kmod-0.6.1-fix-xattr-behavior-2.patch37
-rw-r--r--sys-fs/zfs-kmod/files/zfs-kmod-0.6.1-fix-zfs_sb_teardown-NULL-pointer-deref.patch58
-rw-r--r--sys-fs/zfs-kmod/files/zfs-kmod-0.6.1-fix-zfsctl_expire_snapshot-deadlock.patch73
-rw-r--r--sys-fs/zfs-kmod/files/zfs-kmod-0.6.1-fix-zvol-initialization-r1.patch167
-rw-r--r--sys-fs/zfs-kmod/files/zfs-kmod-0.6.1-linux-3.10-compat.patch108
-rw-r--r--sys-fs/zfs-kmod/files/zfs-kmod-0.6.5-discard-on-zvol-fix.patch31
20 files changed, 0 insertions, 1566 deletions
diff --git a/sys-fs/zfs-kmod/files/zfs-kmod-0.6.0_rc13-fix-invisible-snapshots.patch b/sys-fs/zfs-kmod/files/zfs-kmod-0.6.0_rc13-fix-invisible-snapshots.patch
deleted file mode 100644
index 2daf211c7744..000000000000
--- a/sys-fs/zfs-kmod/files/zfs-kmod-0.6.0_rc13-fix-invisible-snapshots.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 1c50c992bafd96773dc3950d382a89806df8cc9c Mon Sep 17 00:00:00 2001
-From: Brian Behlendorf <behlendorf1@llnl.gov>
-Date: Wed, 9 Jan 2013 11:09:06 -0800
-Subject: [PATCH] Revert "Avoid ELOOP on auto-mounted snapshots"
-
-This reverts commit 7afcf5b1da83549bfba70a61fae7a00eaa63c2b0 which
-accidentally introduced a regression with the .zfs snapshot directory.
-While the updated code still does correctly mount the requested
-snapshot. It updates the vfsmount such that it references the
-original dataset vfsmount. The result is that the snapshot itself
-isn't visible.
-
-Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
-Issue #816
----
- module/zfs/zpl_ctldir.c | 7 -------
- 1 file changed, 7 deletions(-)
-
-diff --git a/module/zfs/zpl_ctldir.c b/module/zfs/zpl_ctldir.c
-index a2d8fa9..7dfaf6e 100644
---- a/module/zfs/zpl_ctldir.c
-+++ b/module/zfs/zpl_ctldir.c
-@@ -357,13 +357,6 @@
- return ERR_PTR(error);
-
- /*
-- * Ensure path->dentry points to the dentry for the root of the
-- * newly-mounted snapshot, otherwise this function may be called
-- * repeatedly which can lead to an incorrect ELOOP error return.
-- */
-- follow_up(path);
--
-- /*
- * Rather than returning the new vfsmount for the snapshot we must
- * return NULL to indicate a mount collision. This is done because
- * the user space mount calls do_add_mount() which adds the vfsmount
---
-1.7.10
-
diff --git a/sys-fs/zfs-kmod/files/zfs-kmod-0.6.0_rc13-fix-recursive-reader.patch b/sys-fs/zfs-kmod/files/zfs-kmod-0.6.0_rc13-fix-recursive-reader.patch
deleted file mode 100644
index 7d0263f31901..000000000000
--- a/sys-fs/zfs-kmod/files/zfs-kmod-0.6.0_rc13-fix-recursive-reader.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-diff --git a/module/zfs/dsl_dataset.c b/module/zfs/dsl_dataset.c
-index 21fdd08..872d44a 100644
---- a/module/zfs/dsl_dataset.c
-+++ b/module/zfs/dsl_dataset.c
-@@ -20,7 +20,7 @@
- */
- /*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
-- * Copyright (c) 2011 by Delphix. All rights reserved.
-+ * Copyright (c) 2012 by Delphix. All rights reserved.
- * Copyright (c) 2012, Joyent, Inc. All rights reserved.
- */
-
-@@ -4158,9 +4220,13 @@ struct dsl_ds_releasearg {
- dsl_dataset_t *snap;
- uint64_t used, comp, uncomp;
-
-- err = dsl_dataset_hold_obj(dp, snapobj, FTAG, &snap);
-- if (err != 0)
-- break;
-+ if (snapobj == new->ds_object) {
-+ snap = new;
-+ } else {
-+ err = dsl_dataset_hold_obj(dp, snapobj, FTAG, &snap);
-+ if (err != 0)
-+ break;
-+ }
-
- if (snap->ds_phys->ds_prev_snap_txg ==
- oldsnap->ds_phys->ds_creation_txg) {
-@@ -4189,7 +4255,8 @@ struct dsl_ds_releasearg {
- * was not a snapshot of/before new.
- */
- snapobj = snap->ds_phys->ds_prev_snap_obj;
-- dsl_dataset_rele(snap, FTAG);
-+ if (snap != new)
-+ dsl_dataset_rele(snap, FTAG);
- if (snapobj == 0) {
- err = EINVAL;
- break;
diff --git a/sys-fs/zfs-kmod/files/zfs-kmod-0.6.0_rc13-gcc-4.7-compat.patch b/sys-fs/zfs-kmod/files/zfs-kmod-0.6.0_rc13-gcc-4.7-compat.patch
deleted file mode 100644
index 9f31ecc82307..000000000000
--- a/sys-fs/zfs-kmod/files/zfs-kmod-0.6.0_rc13-gcc-4.7-compat.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 37f000c5aa76613e644cf3e5b1ec7bd2df6f7451 Mon Sep 17 00:00:00 2001
-From: Ned Bass <bass6@llnl.gov>
-Date: Wed, 26 Dec 2012 14:56:41 -0800
-Subject: [PATCH] Fix gcc array subscript above bounds warning
-
-In a debug build, certain GCC versions flag an array bounds warning in
-the below code from dnode_sync.c
-
- } else {
- int i;
- ASSERT(dn->dn_next_nblkptr[txgoff] < dnp->dn_nblkptr);
- /* the blkptrs we are losing better be unallocated */
- for (i = dn->dn_next_nblkptr[txgoff];
- i < dnp->dn_nblkptr; i++)
- ASSERT(BP_IS_HOLE(&dnp->dn_blkptr[i]));
-
-This usage is in fact safe, since the ASSERT ensures the index does
-not exceed to maximum possible number of block pointers. However gcc
-can't determine that the assignment 'i = dn->dn_next_nblkptr[txgoff];'
-falls within the array bounds so it issues a warning. To avoid this,
-initialize i to zero to make gcc happy but skip the elements before
-dn->dn_next_nblkptr[txgoff] in the loop body. Since a dnode contains
-at most 3 block pointers this overhead should be negligible.
-
-Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
-Closes #950
----
- module/zfs/dnode_sync.c | 7 ++++---
- 1 file changed, 4 insertions(+), 3 deletions(-)
-
-diff --git a/module/zfs/dnode_sync.c b/module/zfs/dnode_sync.c
-index af636dc..f2dda86 100644
---- a/module/zfs/dnode_sync.c
-+++ b/module/zfs/dnode_sync.c
-@@ -666,9 +666,10 @@
- int i;
- ASSERT(dn->dn_next_nblkptr[txgoff] < dnp->dn_nblkptr);
- /* the blkptrs we are losing better be unallocated */
-- for (i = dn->dn_next_nblkptr[txgoff];
-- i < dnp->dn_nblkptr; i++)
-- ASSERT(BP_IS_HOLE(&dnp->dn_blkptr[i]));
-+ for (i = 0; i < dnp->dn_nblkptr; i++) {
-+ if (i >= dn->dn_next_nblkptr[txgoff])
-+ ASSERT(BP_IS_HOLE(&dnp->dn_blkptr[i]));
-+ }
- #endif
- }
- mutex_enter(&dn->dn_mtx);
---
-1.7.10
-
diff --git a/sys-fs/zfs-kmod/files/zfs-kmod-0.6.0_rc14-cast-const-for-32bit-compatibility.patch b/sys-fs/zfs-kmod/files/zfs-kmod-0.6.0_rc14-cast-const-for-32bit-compatibility.patch
deleted file mode 100644
index 13189244c69a..000000000000
--- a/sys-fs/zfs-kmod/files/zfs-kmod-0.6.0_rc14-cast-const-for-32bit-compatibility.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From dd26aa535b395735ca61ea2a3e618aded45eb05e Mon Sep 17 00:00:00 2001
-From: Brian Behlendorf <behlendorf1@llnl.gov>
-Date: Mon, 4 Feb 2013 16:35:54 -0800
-Subject: [PATCH] Cast 'zfs bad bloc' to ULL for x86
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Explicitly case this value to an unsigned long long for 32-bit
-systems to inform the compiler that a long type should not be
-used. Otherwise we get the following compiler error:
-
- dmu_send.c:376: error: integer constant is too large for
- ‘long’ type
-
-Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
----
- module/zfs/dmu_send.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/module/zfs/dmu_send.c b/module/zfs/dmu_send.c
-index 0cf3c4a..921c3d7 100644
---- a/module/zfs/dmu_send.c
-+++ b/module/zfs/dmu_send.c
-@@ -373,7 +373,7 @@
- for (ptr = abuf->b_data;
- (char *)ptr < (char *)abuf->b_data + blksz;
- ptr++)
-- *ptr = 0x2f5baddb10c;
-+ *ptr = 0x2f5baddb10cULL;
- } else {
- return (EIO);
- }
---
-1.7.10
-
diff --git a/sys-fs/zfs-kmod/files/zfs-kmod-0.6.0_rc14-flush-properly.patch b/sys-fs/zfs-kmod/files/zfs-kmod-0.6.0_rc14-flush-properly.patch
deleted file mode 100644
index fb4c7c35696c..000000000000
--- a/sys-fs/zfs-kmod/files/zfs-kmod-0.6.0_rc14-flush-properly.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-diff --git a/config/kernel.m4 b/config/kernel.m4
-index 5623785..9d5aa46 100644
---- a/config/kernel.m4
-+++ b/config/kernel.m4
-@@ -16,7 +16,6 @@ AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [
- ZFS_AC_KERNEL_INVALIDATE_BDEV_ARGS
- ZFS_AC_KERNEL_BDEV_LOGICAL_BLOCK_SIZE
- ZFS_AC_KERNEL_BDEV_PHYSICAL_BLOCK_SIZE
-- ZFS_AC_KERNEL_BIO_EMPTY_BARRIER
- ZFS_AC_KERNEL_BIO_FAILFAST
- ZFS_AC_KERNEL_BIO_FAILFAST_DTD
- ZFS_AC_KERNEL_REQ_FAILFAST_MASK
-diff --git a/module/zfs/vdev_disk.c b/module/zfs/vdev_disk.c
-index cbf0a4d..e902a70 100644
---- a/module/zfs/vdev_disk.c
-+++ b/module/zfs/vdev_disk.c
-@@ -604,8 +604,6 @@
- return __vdev_disk_physio(bdev, NULL, kbuf, size, offset, flags);
- }
-
--/* 2.6.24 API change */
--#ifdef HAVE_BIO_EMPTY_BARRIER
- BIO_END_IO_PROTO(vdev_disk_io_flush_completion, bio, size, rc)
- {
- zio_t *zio = bio->bi_private;
-@@ -646,13 +644,6 @@
-
- return 0;
- }
--#else
--static int
--vdev_disk_io_flush(struct block_device *bdev, zio_t *zio)
--{
-- return ENOTSUP;
--}
--#endif /* HAVE_BIO_EMPTY_BARRIER */
-
- static int
- vdev_disk_io_start(zio_t *zio)
---
-1.7.10
-
diff --git a/sys-fs/zfs-kmod/files/zfs-kmod-0.6.0_rc14-improved-autotools-checks.patch b/sys-fs/zfs-kmod/files/zfs-kmod-0.6.0_rc14-improved-autotools-checks.patch
deleted file mode 100644
index 15d5af34d5c5..000000000000
--- a/sys-fs/zfs-kmod/files/zfs-kmod-0.6.0_rc14-improved-autotools-checks.patch
+++ /dev/null
@@ -1,105 +0,0 @@
-From d75af3c0ebb4e31ece087aeecfeff282cb6f1361 Mon Sep 17 00:00:00 2001
-From: Etienne Dechamps <etienne@edechamps.fr>
-Date: Sun, 24 Feb 2013 12:42:28 +0000
-Subject: [PATCH] Use -Werror for all kernel configure tests.
-
-As a matter of fact, we're already using -Werror for most tests because
-of a bug in kernel-bio-empty-barrier.m4 which sets -Werror without
-reverting it afterwards. This meant that all tests which ran after this
-one was using -Werror.
-
-This patch simply makes it clear that we're using -Werror and makes
-the code more readable and more predictable.
-
-Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
-Closes #1317
----
- config/kernel-bio-empty-barrier.m4 | 1 -
- config/kernel-bio-end-io-t-args.m4 | 3 ---
- config/kernel-security-inode-init.m4 | 6 ------
- config/kernel.m4 | 2 +-
- 4 files changed, 1 insertion(+), 11 deletions(-)
-
-diff --git a/config/kernel-bio-empty-barrier.m4 b/config/kernel-bio-empty-barrier.m4
-index 99549fe..fda16b3 100644
---- a/config/kernel-bio-empty-barrier.m4
-+++ b/config/kernel-bio-empty-barrier.m4
-@@ -4,7 +4,6 @@ dnl # Empty write barriers are now supported and we should use them.
- dnl #
- AC_DEFUN([ZFS_AC_KERNEL_BIO_EMPTY_BARRIER], [
- AC_MSG_CHECKING([whether bio_empty_barrier() is defined])
-- EXTRA_KCFLAGS="-Werror"
- ZFS_LINUX_TRY_COMPILE([
- #include <linux/bio.h>
- ],[
-diff --git a/config/kernel-bio-end-io-t-args.m4 b/config/kernel-bio-end-io-t-args.m4
-index ced4861..44e4826 100644
---- a/config/kernel-bio-end-io-t-args.m4
-+++ b/config/kernel-bio-end-io-t-args.m4
-@@ -9,8 +9,6 @@ dnl # to void.
- dnl #
- AC_DEFUN([ZFS_AC_KERNEL_BIO_END_IO_T_ARGS], [
- AC_MSG_CHECKING([whether bio_end_io_t wants 2 args])
-- tmp_flags="$EXTRA_KCFLAGS"
-- EXTRA_KCFLAGS="-Werror"
- ZFS_LINUX_TRY_COMPILE([
- #include <linux/bio.h>
- ],[
-@@ -25,5 +23,4 @@ AC_DEFUN([ZFS_AC_KERNEL_BIO_END_IO_T_ARGS], [
- ],[
- AC_MSG_RESULT(no)
- ])
-- EXTRA_KCFLAGS="$tmp_flags"
- ])
-diff --git a/config/kernel-security-inode-init.m4 b/config/kernel-security-inode-init.m4
-index c21588a..a62176d 100644
---- a/config/kernel-security-inode-init.m4
-+++ b/config/kernel-security-inode-init.m4
-@@ -7,8 +7,6 @@ dnl # security checks will just be skipped.
- dnl #
- AC_DEFUN([ZFS_AC_KERNEL_6ARGS_SECURITY_INODE_INIT_SECURITY], [
- AC_MSG_CHECKING([whether security_inode_init_security wants 6 args])
-- tmp_flags="$EXTRA_KCFLAGS"
-- EXTRA_KCFLAGS="-Werror"
- ZFS_LINUX_TRY_COMPILE([
- #include <linux/security.h>
- ],[
-@@ -27,7 +25,6 @@ AC_DEFUN([ZFS_AC_KERNEL_6ARGS_SECURITY_INODE_INIT_SECURITY], [
- ],[
- AC_MSG_RESULT(no)
- ])
-- EXTRA_KCFLAGS="$tmp_flags"
- ])
-
- dnl #
-@@ -39,8 +36,6 @@ dnl # and the EVM xattr.
- dnl #
- AC_DEFUN([ZFS_AC_KERNEL_CALLBACK_SECURITY_INODE_INIT_SECURITY], [
- AC_MSG_CHECKING([whether security_inode_init_security wants callback])
-- tmp_flags="$EXTRA_KCFLAGS"
-- EXTRA_KCFLAGS="-Werror"
- ZFS_LINUX_TRY_COMPILE([
- #include <linux/security.h>
- ],[
-@@ -57,5 +52,4 @@ AC_DEFUN([ZFS_AC_KERNEL_CALLBACK_SECURITY_INODE_INIT_SECURITY], [
- ],[
- AC_MSG_RESULT(no)
- ])
-- EXTRA_KCFLAGS="$tmp_flags"
- ])
-diff --git a/config/kernel.m4 b/config/kernel.m4
-index 6d28074..5623785 100644
---- a/config/kernel.m4
-+++ b/config/kernel.m4
-@@ -488,7 +488,7 @@ AC_DEFUN([ZFS_LINUX_COMPILE_IFELSE], [
- modpost_flag=''
- test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
- AS_IF(
-- [AC_TRY_COMMAND(cp conftest.c build && make [$2] -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag) >/dev/null && AC_TRY_COMMAND([$3])],
-+ [AC_TRY_COMMAND(cp conftest.c build && make [$2] -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag) >/dev/null && AC_TRY_COMMAND([$3])],
- [$4],
- [_AC_MSG_LOG_CONFTEST m4_ifvaln([$5],[$5])]
- )
---
-1.7.10
-
diff --git a/sys-fs/zfs-kmod/files/zfs-kmod-0.6.0_rc14-improved-hardened-support.patch b/sys-fs/zfs-kmod/files/zfs-kmod-0.6.0_rc14-improved-hardened-support.patch
deleted file mode 100644
index 03ee65ef9d4a..000000000000
--- a/sys-fs/zfs-kmod/files/zfs-kmod-0.6.0_rc14-improved-hardened-support.patch
+++ /dev/null
@@ -1,473 +0,0 @@
-From ead579050140bfa010d06f6e0fea3f680c781b38 Mon Sep 17 00:00:00 2001
-From: Richard Yao <ryao@cs.stonybrook.edu>
-Date: Thu, 14 Feb 2013 18:54:04 -0500
-Subject: [PATCH] Eliminate runtime function pointer modifications in
- autotools checks
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-PaX/GrSecurity patched kernels implement a dialect of C that relies on a
-GCC plugin for enforcement. A basic idea in this dialect is that
-function pointers in structures should not change during runtime.
-This causes code that modifies function pointers at runtime to fail to
-compile in many instances. The autotools checks rely on whether or
-not small test cases compile against a given kernel. Some
-autotools checks assume some default case if other cases fail. When one
-of these autotools checks tests a PaX/GrSecurity patched kernel by
-modifying a function pointer at runtime, the default case will be used.
-
-Early detection of such situations is possible by relying on compiler
-warnings, which are compiler errors when --enable-debug is used.
-Unfortunately, very few people build ZFS with --enable-debug. The more
-common situation is that these issues manifest themselves as runtime
-failures in the form of NULL pointer exceptions.
-
-Previous patches that addressed such issues with PaX/GrSecurity
-compatibility largely relied on rewriting autotools checks to avoid
-runtime function pointer modification or the addition of PaX/GrSecurity
-specific checks. This patch takes the previous work to its logical
-conclusion by eliminating the use of runtime function pointer
-modification. This permits the removal of PaX-specific autotools checks
-in favor of ones that work across all supported kernels.
-
-This should resolve issues that were reported to occur with
-PaX/GrSecurity-patched Linux 3.7.5 kernels on Gentoo Linux.
-
-https://bugs.gentoo.org/show_bug.cgi?id=457176
-
-We should be able to prevent future regressions in PaX/GrSecurity
-compatibility by ensuring that all changes to ZFSOnLinux avoid runtime
-function pointer modification. At the same time, this does not solve the
-issue of silent failures triggering default cases in the autotools
-check, which is what permitted these regressions to become runtime
-failures in the first place. This will need to be addressed in a future
-patch.
-
-Reported-by: Marcin Mirosław <bug@mejor.pl>
-Signed-off-by: Richard Yao <ryao@cs.stonybrook.edu>
----
- config/kernel-bdev-block-device-operations.m4 | 21 +++----
- config/kernel-bio-end-io-t-args.m4 | 6 +-
- config/kernel-create-nameidata.m4 | 12 ++--
- config/kernel-dentry-operations.m4 | 6 +-
- config/kernel-dirty-inode.m4 | 8 +--
- config/kernel-fallocate.m4 | 37 +++--------
- config/kernel-fsync.m4 | 84 ++++---------------------
- config/kernel-lookup-nameidata.m4 | 9 +--
- config/kernel-mkdir-umode-t.m4 | 7 ++-
- config/kernel-shrink.m4 | 21 +++----
- 10 files changed, 62 insertions(+), 149 deletions(-)
-
-diff --git a/config/kernel-bdev-block-device-operations.m4 b/config/kernel-bdev-block-device-operations.m4
-index 28c3032..1674af0 100644
---- a/config/kernel-bdev-block-device-operations.m4
-+++ b/config/kernel-bdev-block-device-operations.m4
-@@ -7,24 +7,21 @@ AC_DEFUN([ZFS_AC_KERNEL_BDEV_BLOCK_DEVICE_OPERATIONS], [
- EXTRA_KCFLAGS="${NO_UNUSED_BUT_SET_VARIABLE}"
- ZFS_LINUX_TRY_COMPILE([
- #include <linux/blkdev.h>
-- ],[
-- int (*blk_open) (struct block_device *, fmode_t) = NULL;
-- int (*blk_release) (struct gendisk *, fmode_t) = NULL;
-- int (*blk_ioctl) (struct block_device *, fmode_t,
-- unsigned, unsigned long) = NULL;
-- int (*blk_compat_ioctl) (struct block_device *, fmode_t,
-- unsigned, unsigned long) = NULL;
-- struct block_device_operations blk_ops = {
-+
-+ int blk_open (struct block_device *bdev, fmode_t mode) { return 0; }
-+ int blk_release (struct gendisk *g, fmode_t mode) { return 0; }
-+ int blk_ioctl (struct block_device *bdev, fmode_t mode,
-+ unsigned x, unsigned long y) { return 0; }
-+ int blk_compat_ioctl (struct block_device * bdev, fmode_t mode,
-+ unsigned x, unsigned long y) { return 0; }
-+ static struct block_device_operations blk_ops __attribute__ ((unused)) = {
- .open = blk_open,
- .release = blk_release,
- .ioctl = blk_ioctl,
- .compat_ioctl = blk_compat_ioctl,
- };
-+ ],[
-
-- blk_ops.open(NULL, 0);
-- blk_ops.release(NULL, 0);
-- blk_ops.ioctl(NULL, 0, 0, 0);
-- blk_ops.compat_ioctl(NULL, 0, 0, 0);
- ],[
- AC_MSG_RESULT(struct block_device)
- AC_DEFINE(HAVE_BDEV_BLOCK_DEVICE_OPERATIONS, 1,
-diff --git a/config/kernel-bio-end-io-t-args.m4 b/config/kernel-bio-end-io-t-args.m4
-index ced4861..fe5707a 100644
---- a/config/kernel-bio-end-io-t-args.m4
-+++ b/config/kernel-bio-end-io-t-args.m4
-@@ -13,11 +13,9 @@ AC_DEFUN([ZFS_AC_KERNEL_BIO_END_IO_T_ARGS], [
- EXTRA_KCFLAGS="-Werror"
- ZFS_LINUX_TRY_COMPILE([
- #include <linux/bio.h>
-+ void wanted_end_io(struct bio * bio, int x) { return; }
- ],[
-- void (*wanted_end_io)(struct bio *, int) = NULL;
-- bio_end_io_t *local_end_io __attribute__ ((unused));
--
-- local_end_io = wanted_end_io;
-+ bio_end_io_t *local_end_io __attribute__ ((unused)) = wanted_end_io;
- ],[
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_2ARGS_BIO_END_IO_T, 1,
-diff --git a/config/kernel-create-nameidata.m4 b/config/kernel-create-nameidata.m4
-index 100f077..c779715 100644
---- a/config/kernel-create-nameidata.m4
-+++ b/config/kernel-create-nameidata.m4
-@@ -5,18 +5,18 @@ AC_DEFUN([ZFS_AC_KERNEL_CREATE_NAMEIDATA], [
- AC_MSG_CHECKING([whether iops->create() takes struct nameidata])
- ZFS_LINUX_TRY_COMPILE([
- #include <linux/fs.h>
-- ],[
- #ifdef HAVE_MKDIR_UMODE_T
-- int (*inode_create) (struct inode *,struct dentry *,
-- umode_t, struct nameidata *) = NULL;
-+ int inode_create (struct inode *inode ,struct dentry *dentry,
-+ umode_t umode, struct nameidata *nidata) { return 0; }
- #else
-- int (*inode_create) (struct inode *,struct dentry *,
-- int, struct nameidata *) = NULL;
-+ int inode_create (struct inode *inode,struct dentry *dentry,
-+ int umode, struct nameidata * nidata) { return 0; }
- #endif
-- struct inode_operations iops __attribute__ ((unused)) = {
-+ static struct inode_operations iops __attribute__ ((unused)) = {
- .create = inode_create,
- };
- ],[
-+ ],[
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_CREATE_NAMEIDATA, 1,
- [iops->create() operation takes nameidata])
-diff --git a/config/kernel-dentry-operations.m4 b/config/kernel-dentry-operations.m4
-index dfbea7d..b89c51d 100644
---- a/config/kernel-dentry-operations.m4
-+++ b/config/kernel-dentry-operations.m4
-@@ -5,12 +5,12 @@ AC_DEFUN([ZFS_AC_KERNEL_D_REVALIDATE_NAMEIDATA], [
- AC_MSG_CHECKING([whether dops->d_revalidate() takes struct nameidata])
- ZFS_LINUX_TRY_COMPILE([
- #include <linux/dcache.h>
-- ],[
-- int (*revalidate) (struct dentry *, struct nameidata *) = NULL;
-- struct dentry_operations dops __attribute__ ((unused)) = {
-+ int revalidate (struct dentry *dentry, struct nameidata *nidata) { return 0; }
-+ static struct dentry_operations dops __attribute__ ((unused)) = {
- .d_revalidate = revalidate,
- };
- ],[
-+ ],[
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_D_REVALIDATE_NAMEIDATA, 1,
- [dops->d_revalidate() operation takes nameidata])
-diff --git a/config/kernel-dirty-inode.m4 b/config/kernel-dirty-inode.m4
-index 2ededf1..86e3425 100644
---- a/config/kernel-dirty-inode.m4
-+++ b/config/kernel-dirty-inode.m4
-@@ -8,11 +8,11 @@ AC_DEFUN([ZFS_AC_KERNEL_DIRTY_INODE_WITH_FLAGS], [
- AC_MSG_CHECKING([whether sops->dirty_inode() wants flags])
- ZFS_LINUX_TRY_COMPILE([
- #include <linux/fs.h>
-+ void dirty_inode (struct inode * a, int b) { return; }
-+ static struct super_operations sops __attribute__ ((unused)) = {
-+ .dirty_inode = dirty_inode,
-+ };
- ],[
-- void (*dirty_inode) (struct inode *, int) = NULL;
-- struct super_operations sops __attribute__ ((unused));
--
-- sops.dirty_inode = dirty_inode;
- ],[
- AC_MSG_RESULT([yes])
- AC_DEFINE(HAVE_DIRTY_INODE_WITH_FLAGS, 1,
-diff --git a/config/kernel-fallocate.m4 b/config/kernel-fallocate.m4
-index 6ac5ae6..0041ef2 100644
---- a/config/kernel-fallocate.m4
-+++ b/config/kernel-fallocate.m4
-@@ -5,12 +5,12 @@ AC_DEFUN([ZFS_AC_KERNEL_FILE_FALLOCATE], [
- AC_MSG_CHECKING([whether fops->fallocate() exists])
- ZFS_LINUX_TRY_COMPILE([
- #include <linux/fs.h>
-- ],[
-- long (*fallocate) (struct file *, int, loff_t, loff_t) = NULL;
-- struct file_operations fops __attribute__ ((unused)) = {
-- .fallocate = fallocate,
-+ long test_fallocate(struct file *file, int mode, loff_t offset, loff_t len) { return 0; }
-+ static const struct file_operations fops __attribute__ ((unused)) = {
-+ .fallocate = test_fallocate,
- };
- ],[
-+ ],[
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_FILE_FALLOCATE, 1, [fops->fallocate() exists])
- ],[
-@@ -25,34 +25,14 @@ AC_DEFUN([ZFS_AC_KERNEL_INODE_FALLOCATE], [
- AC_MSG_CHECKING([whether iops->fallocate() exists])
- ZFS_LINUX_TRY_COMPILE([
- #include <linux/fs.h>
-- ],[
-- long (*fallocate) (struct inode *, int, loff_t, loff_t) = NULL;
-- struct inode_operations fops __attribute__ ((unused)) = {
-- .fallocate = fallocate,
-+ long test_fallocate (struct inode *inode, int mode, loff_t offset, loff_t len) { return 0; }
-+ static const struct inode_operations fops __attribute__ ((unused)) = {
-+ .fallocate = test_fallocate,
- };
- ],[
-- AC_MSG_RESULT(yes)
-- AC_DEFINE(HAVE_INODE_FALLOCATE, 1, [fops->fallocate() exists])
-- ],[
-- AC_MSG_RESULT(no)
-- ])
--])
--
--dnl #
--dnl # PaX Linux 2.6.38 - 3.x API
--dnl #
--AC_DEFUN([ZFS_AC_PAX_KERNEL_FILE_FALLOCATE], [
-- AC_MSG_CHECKING([whether fops->fallocate() exists])
-- ZFS_LINUX_TRY_COMPILE([
-- #include <linux/fs.h>
-- ],[
-- long (*fallocate) (struct file *, int, loff_t, loff_t) = NULL;
-- struct file_operations_no_const fops __attribute__ ((unused)) = {
-- .fallocate = fallocate,
-- };
- ],[
- AC_MSG_RESULT(yes)
-- AC_DEFINE(HAVE_FILE_FALLOCATE, 1, [fops->fallocate() exists])
-+ AC_DEFINE(HAVE_INODE_FALLOCATE, 1, [fops->fallocate() exists])
- ],[
- AC_MSG_RESULT(no)
- ])
-@@ -65,5 +45,4 @@ dnl #
- AC_DEFUN([ZFS_AC_KERNEL_FALLOCATE], [
- ZFS_AC_KERNEL_FILE_FALLOCATE
- ZFS_AC_KERNEL_INODE_FALLOCATE
-- ZFS_AC_PAX_KERNEL_FILE_FALLOCATE
- ])
-diff --git a/config/kernel-fsync.m4 b/config/kernel-fsync.m4
-index ca00d93..9ac0c79 100644
---- a/config/kernel-fsync.m4
-+++ b/config/kernel-fsync.m4
-@@ -4,11 +4,11 @@ dnl #
- AC_DEFUN([ZFS_AC_KERNEL_FSYNC_WITH_DENTRY], [
- ZFS_LINUX_TRY_COMPILE([
- #include <linux/fs.h>
-+ int test_fsync (struct file *f, struct dentry *dentry, int x) { return 0; }
-+ static const struct file_operations fops __attribute__ ((unused)) = {
-+ .fsync = test_fsync,
-+ };
- ],[
-- int (*fsync) (struct file *, struct dentry *, int) = NULL;
-- struct file_operations fops __attribute__ ((unused));
--
-- fops.fsync = fsync;
- ],[
- AC_MSG_RESULT([dentry])
- AC_DEFINE(HAVE_FSYNC_WITH_DENTRY, 1,
-@@ -23,11 +23,11 @@ dnl #
- AC_DEFUN([ZFS_AC_KERNEL_FSYNC_WITHOUT_DENTRY], [
- ZFS_LINUX_TRY_COMPILE([
- #include <linux/fs.h>
-+ int test_fsync (struct file *f, int x) { return 0; }
-+ static const struct file_operations fops __attribute__ ((unused)) = {
-+ .fsync = test_fsync,
-+ };
- ],[
-- int (*fsync) (struct file *, int) = NULL;
-- struct file_operations fops __attribute__ ((unused));
--
-- fops.fsync = fsync;
- ],[
- AC_MSG_RESULT([no dentry])
- AC_DEFINE(HAVE_FSYNC_WITHOUT_DENTRY, 1,
-@@ -42,68 +42,11 @@ dnl #
- AC_DEFUN([ZFS_AC_KERNEL_FSYNC_RANGE], [
- ZFS_LINUX_TRY_COMPILE([
- #include <linux/fs.h>
-+ int test_fsync (struct file *f, loff_t a, loff_t b, int c) { return 0; }
-+ static const struct file_operations fops __attribute__ ((unused)) = {
-+ .fsync = test_fsync,
-+ };
- ],[
-- int (*fsync) (struct file *, loff_t, loff_t, int) = NULL;
-- struct file_operations fops __attribute__ ((unused));
--
-- fops.fsync = fsync;
-- ],[
-- AC_MSG_RESULT([range])
-- AC_DEFINE(HAVE_FSYNC_RANGE, 1,
-- [fops->fsync() with range])
-- ],[
-- ])
--])
--
--dnl #
--dnl # PaX Linux 2.6.x - 2.6.34 API
--dnl #
--AC_DEFUN([ZFS_AC_PAX_KERNEL_FSYNC_WITH_DENTRY], [
-- ZFS_LINUX_TRY_COMPILE([
-- #include <linux/fs.h>
-- ],[
-- int (*fsync) (struct file *, struct dentry *, int) = NULL;
-- file_operations_no_const fops __attribute__ ((unused));
--
-- fops.fsync = fsync;
-- ],[
-- AC_MSG_RESULT([dentry])
-- AC_DEFINE(HAVE_FSYNC_WITH_DENTRY, 1,
-- [fops->fsync() with dentry])
-- ],[
-- ])
--])
--
--dnl #
--dnl # PaX Linux 2.6.35 - Linux 3.0 API
--dnl #
--AC_DEFUN([ZFS_AC_PAX_KERNEL_FSYNC_WITHOUT_DENTRY], [
-- ZFS_LINUX_TRY_COMPILE([
-- #include <linux/fs.h>
-- ],[
-- int (*fsync) (struct file *, int) = NULL;
-- file_operations_no_const fops __attribute__ ((unused));
--
-- fops.fsync = fsync;
-- ],[
-- AC_MSG_RESULT([no dentry])
-- AC_DEFINE(HAVE_FSYNC_WITHOUT_DENTRY, 1,
-- [fops->fsync() without dentry])
-- ],[
-- ])
--])
--
--dnl #
--dnl # PaX Linux 3.1 - 3.x API
--dnl #
--AC_DEFUN([ZFS_AC_PAX_KERNEL_FSYNC_RANGE], [
-- ZFS_LINUX_TRY_COMPILE([
-- #include <linux/fs.h>
-- ],[
-- int (*fsync) (struct file *, loff_t, loff_t, int) = NULL;
-- file_operations_no_const fops __attribute__ ((unused));
--
-- fops.fsync = fsync;
- ],[
- AC_MSG_RESULT([range])
- AC_DEFINE(HAVE_FSYNC_RANGE, 1,
-@@ -117,7 +60,4 @@ AC_DEFUN([ZFS_AC_KERNEL_FSYNC], [
- ZFS_AC_KERNEL_FSYNC_WITH_DENTRY
- ZFS_AC_KERNEL_FSYNC_WITHOUT_DENTRY
- ZFS_AC_KERNEL_FSYNC_RANGE
-- ZFS_AC_PAX_KERNEL_FSYNC_WITH_DENTRY
-- ZFS_AC_PAX_KERNEL_FSYNC_WITHOUT_DENTRY
-- ZFS_AC_PAX_KERNEL_FSYNC_RANGE
- ])
-diff --git a/config/kernel-lookup-nameidata.m4 b/config/kernel-lookup-nameidata.m4
-index 5e30be4..20b8cca 100644
---- a/config/kernel-lookup-nameidata.m4
-+++ b/config/kernel-lookup-nameidata.m4
-@@ -5,13 +5,14 @@ AC_DEFUN([ZFS_AC_KERNEL_LOOKUP_NAMEIDATA], [
- AC_MSG_CHECKING([whether iops->lookup() takes struct nameidata])
- ZFS_LINUX_TRY_COMPILE([
- #include <linux/fs.h>
-- ],[
-- struct dentry * (*inode_lookup) (struct inode *,struct dentry *,
-- struct nameidata *) = NULL;
-- struct inode_operations iops __attribute__ ((unused)) = {
-+ struct dentry * inode_lookup (struct inode * inode,
-+ struct dentry * dentry, struct nameidata * nidata)
-+ { return NULL; }
-+ static struct inode_operations iops __attribute__ ((unused)) = {
- .lookup = inode_lookup,
- };
- ],[
-+ ],[
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_LOOKUP_NAMEIDATA, 1,
- [iops->lookup() operation takes nameidata])
-diff --git a/config/kernel-mkdir-umode-t.m4 b/config/kernel-mkdir-umode-t.m4
-index dd5d94b..ce8aa8f 100644
---- a/config/kernel-mkdir-umode-t.m4
-+++ b/config/kernel-mkdir-umode-t.m4
-@@ -10,12 +10,13 @@ AC_DEFUN([ZFS_AC_KERNEL_MKDIR_UMODE_T], [
- AC_MSG_CHECKING([whether iops->create()/mkdir()/mknod() take umode_t])
- ZFS_LINUX_TRY_COMPILE([
- #include <linux/fs.h>
-- ],[
-- int (*mkdir) (struct inode *,struct dentry *,umode_t) = NULL;
-- struct inode_operations iops __attribute__ ((unused)) = {
-+ int mkdir (struct inode * inode, struct dentry * dentry, umode_t umode)
-+ { return 0; }
-+ static struct inode_operations iops __attribute__ ((unused)) = {
- .mkdir = mkdir,
- };
- ],[
-+ ],[
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_MKDIR_UMODE_T, 1,
- [iops->create()/mkdir()/mknod() take umode_t])
-diff --git a/config/kernel-shrink.m4 b/config/kernel-shrink.m4
-index ea748c9..ce4b965 100644
---- a/config/kernel-shrink.m4
-+++ b/config/kernel-shrink.m4
-@@ -8,15 +8,14 @@ AC_DEFUN([ZFS_AC_KERNEL_SHRINK], [
- AC_MSG_CHECKING([whether super_block has s_shrink])
- ZFS_LINUX_TRY_COMPILE([
- #include <linux/fs.h>
-- ],[
-- int (*shrink)(struct shrinker *, struct shrink_control *sc)
-- __attribute__ ((unused)) = NULL;
-- struct super_block sb __attribute__ ((unused)) = {
-+ int shrink(struct shrinker * s, struct shrink_control *sc) { return 0; }
-+ static struct super_block sb __attribute__ ((unused)) = {
- .s_shrink.shrink = shrink,
- .s_shrink.seeks = DEFAULT_SEEKS,
- .s_shrink.batch = 0,
- };
- ],[
-+ ],[
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_SHRINK, 1, [struct super_block has s_shrink])
-
-@@ -29,13 +28,12 @@ AC_DEFUN([ZFS_AC_KERNEL_NR_CACHED_OBJECTS], [
- AC_MSG_CHECKING([whether sops->nr_cached_objects() exists])
- ZFS_LINUX_TRY_COMPILE([
- #include <linux/fs.h>
-- ],[
-- int (*nr_cached_objects)(struct super_block *)
-- __attribute__ ((unused)) = NULL;
-- struct super_operations sops __attribute__ ((unused)) = {
-+ int nr_cached_objects(struct super_block * sb) { return 0; }
-+ static struct super_operations sops __attribute__ ((unused)) = {
- .nr_cached_objects = nr_cached_objects,
- };
- ],[
-+ ],[
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_NR_CACHED_OBJECTS, 1,
- [sops->nr_cached_objects() exists])
-@@ -48,13 +46,12 @@ AC_DEFUN([ZFS_AC_KERNEL_FREE_CACHED_OBJECTS], [
- AC_MSG_CHECKING([whether sops->free_cached_objects() exists])
- ZFS_LINUX_TRY_COMPILE([
- #include <linux/fs.h>
-- ],[
-- void (*free_cached_objects)(struct super_block *, int)
-- __attribute__ ((unused)) = NULL;
-- struct super_operations sops __attribute__ ((unused)) = {
-+ void free_cached_objects(struct super_block * sb, int x) { return; }
-+ static struct super_operations sops __attribute__ ((unused)) = {
- .free_cached_objects = free_cached_objects,
- };
- ],[
-+ ],[
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_FREE_CACHED_OBJECTS, 1,
- [sops->free_cached_objects() exists])
---
-1.7.10
-
diff --git a/sys-fs/zfs-kmod/files/zfs-kmod-0.6.0_rc14-linux-3.9-compat.patch b/sys-fs/zfs-kmod/files/zfs-kmod-0.6.0_rc14-linux-3.9-compat.patch
deleted file mode 100644
index 1dfef6117f1a..000000000000
--- a/sys-fs/zfs-kmod/files/zfs-kmod-0.6.0_rc14-linux-3.9-compat.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-commit 3d8c9c9de0a5e1f1b496fcef2750a01a45860b04
-Author: Richard Yao <ryao@cs.stonybrook.edu>
-Date: Mon Mar 4 15:52:11 2013 -0500
-
- Linux 3.9 compat: Undefine GCC_VERSION
-
- The mainline kernel started defining GCC_VERSION with commit
- torvalds/linux@3f3f8d2f48acfd8ed3b8e6b7377935da57b27b16. Unfortunately,
- LZ4 also defines this macro, but the two defintions are incompatible. We
- undefine GCC_VERSION in lz4.c to handle this.
-
- Signed-off-by: Richard Yao <ryao@cs.stonybrook.edu>
-
-diff --git a/module/zfs/lz4.c b/module/zfs/lz4.c
-index b9850c0..8afaad1 100644
---- a/module/zfs/lz4.c
-+++ b/module/zfs/lz4.c
-@@ -243,6 +243,14 @@ lz4_decompress(void *s_start, void *d_start, size_t s_len, size_t d_len, int n)
- /* Disable restrict */
- #define restrict
-
-+/*
-+ * Linux : GCC_VERSION is defined as of 3.9-rc1, so undefine it.
-+ * torvalds/linux@3f3f8d2f48acfd8ed3b8e6b7377935da57b27b16
-+ */
-+#ifdef GCC_VERSION
-+#undef GCC_VERSION
-+#endif
-+
- #define GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__)
-
- #if (GCC_VERSION >= 302) || (__INTEL_COMPILER >= 800) || defined(__clang__) \ No newline at end of file
diff --git a/sys-fs/zfs-kmod/files/zfs-kmod-0.6.0_rc14-vfs-name-length-compatibility.patch b/sys-fs/zfs-kmod/files/zfs-kmod-0.6.0_rc14-vfs-name-length-compatibility.patch
deleted file mode 100644
index 5f9f6525e73c..000000000000
--- a/sys-fs/zfs-kmod/files/zfs-kmod-0.6.0_rc14-vfs-name-length-compatibility.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 7f235381a0e501df55ebe2de10b69124e928d175 Mon Sep 17 00:00:00 2001
-From: Brian Behlendorf <behlendorf1@llnl.gov>
-Date: Mon, 11 Feb 2013 12:55:24 -0800
-Subject: [PATCH] Add explicit MAXNAMELEN check
-
-It turns out that the Linux VFS doesn't strictly handle all cases
-where a component path name exceeds MAXNAMELEN. It does however
-appear to correctly handle MAXPATHLEN for us.
-
-The right way to handle this appears to be to add an explicit
-check to the zpl_lookup() function. Several in-tree filesystems
-handle this case the same way.
-
-Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
-Issue #1279
----
- module/zfs/zpl_inode.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/module/zfs/zpl_inode.c b/module/zfs/zpl_inode.c
-index e406288..8c8ec24 100644
---- a/module/zfs/zpl_inode.c
-+++ b/module/zfs/zpl_inode.c
-@@ -41,6 +41,9 @@
- struct inode *ip;
- int error;
-
-+ if (dlen(dentry) > ZFS_MAXNAMELEN)
-+ return ERR_PTR(-ENAMETOOLONG);
-+
- crhold(cr);
- error = -zfs_lookup(dir, dname(dentry), &ip, 0, cr, NULL, NULL);
- ASSERT3S(error, <=, 0);
---
-1.7.10
-
diff --git a/sys-fs/zfs-kmod/files/zfs-kmod-0.6.0_rc14-zfs_arc_memory_throttle_disable.patch b/sys-fs/zfs-kmod/files/zfs-kmod-0.6.0_rc14-zfs_arc_memory_throttle_disable.patch
deleted file mode 100644
index 81ec15f3e6c7..000000000000
--- a/sys-fs/zfs-kmod/files/zfs-kmod-0.6.0_rc14-zfs_arc_memory_throttle_disable.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 546c978bbd3f132a88609cab15ec0e954eaa62b8 Mon Sep 17 00:00:00 2001
-From: Brian Behlendorf <behlendorf1@llnl.gov>
-Date: Thu, 21 Feb 2013 12:14:44 -0800
-Subject: [PATCH] Enable zfs_arc_memory_throttle_disable by default
-
-The zfs_arc_memory_throttle_disable module option was introduced
-by commit 0c5493d47059f25ce9dbf20c9fe87655f55102a1 to resolve a
-memory miscalculation which could result in the txg_sync thread
-spinning.
-
-When this was first introduced the default behavior was left
-unchanged until enough real world usage confirmed there were no
-unexpected issues. We've now reached that point. Linux's
-direct reclaim is working as expected so we're enabling this
-behavior by default.
-
-This helps pave the way to retire the spl_kmem_availrmem()
-functionality in the SPL layer. This was the only caller.
-
-Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
-Issue #938
----
- module/zfs/arc.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/module/zfs/arc.c b/module/zfs/arc.c
-index 09924db..b7499ee 100644
---- a/module/zfs/arc.c
-+++ b/module/zfs/arc.c
-@@ -189,7 +189,7 @@
- int zfs_arc_grow_retry = 0;
- int zfs_arc_shrink_shift = 0;
- int zfs_arc_p_min_shift = 0;
--int zfs_arc_memory_throttle_disable = 0;
-+int zfs_arc_memory_throttle_disable = 1;
- int zfs_disable_dup_eviction = 0;
- int zfs_arc_meta_prune = 0;
-
---
-1.8.1.5
-
diff --git a/sys-fs/zfs-kmod/files/zfs-kmod-0.6.1-fix-arc-read-panic.patch b/sys-fs/zfs-kmod/files/zfs-kmod-0.6.1-fix-arc-read-panic.patch
deleted file mode 100644
index 00ec1057efa1..000000000000
--- a/sys-fs/zfs-kmod/files/zfs-kmod-0.6.1-fix-arc-read-panic.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 3db3ff4a787acf068b122562fb5be5aecec2611f Mon Sep 17 00:00:00 2001
-From: Richard Yao <ryao@gentoo.org>
-Date: Tue, 2 Jul 2013 00:07:15 -0400
-Subject: [PATCH] Use MAXPATHLEN instead of sizeof in snprintf
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-This silences a GCC 4.8.0 warning by fixing a programming error
-caught by static analysis:
-
-../../cmd/ztest/ztest.c: In function ‘ztest_vdev_aux_add_remove’:
-../../cmd/ztest/ztest.c:2584:33: error: argument to ‘sizeof’
- in ‘snprintf’ call is the same expression as the destination;
- did you mean to provide an explicit length?
- [-Werror=sizeof-pointer-memaccess]
- (void) snprintf(path, sizeof (path), ztest_aux_template,
- ^
-
-Signed-off-by: Richard Yao <ryao@gentoo.org>
-Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
-Closes #1480
----
- cmd/ztest/ztest.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/cmd/ztest/ztest.c b/cmd/ztest/ztest.c
-index b38d7b1..93a5f1e 100644
---- a/cmd/ztest/ztest.c
-+++ b/cmd/ztest/ztest.c
-@@ -2581,7 +2581,7 @@ enum ztest_object {
- zs->zs_vdev_aux = 0;
- for (;;) {
- int c;
-- (void) snprintf(path, sizeof (path), ztest_aux_template,
-+ (void) snprintf(path, MAXPATHLEN, ztest_aux_template,
- ztest_opts.zo_dir, ztest_opts.zo_pool, aux,
- zs->zs_vdev_aux);
- for (c = 0; c < sav->sav_count; c++)
---
-1.8.1.6
-
diff --git a/sys-fs/zfs-kmod/files/zfs-kmod-0.6.1-fix-getdents.patch b/sys-fs/zfs-kmod/files/zfs-kmod-0.6.1-fix-getdents.patch
deleted file mode 100644
index ce7d5c0494d9..000000000000
--- a/sys-fs/zfs-kmod/files/zfs-kmod-0.6.1-fix-getdents.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 8f1e11b6105bf46a4258958eb3dcae2ab21ed8b2 Mon Sep 17 00:00:00 2001
-From: Caleb James DeLisle <calebdelisle@lavabit.com>
-Date: Tue, 16 Apr 2013 05:23:39 -0400
-Subject: [PATCH] Remove .readdir from zpl_file_operations table
-
-The zpl_readdir() function shouldn't be registered as part of
-the zpl_file_operations table, it must only be part of the
-zpl_dir_file_operations table. By removing this callback
-the VFS will now correctly return ENOTDIR when calling
-getdents() on a file.
-
-Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
-Closes #1404
----
- module/zfs/zpl_file.c | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/module/zfs/zpl_file.c b/module/zfs/zpl_file.c
-index 9c27b7f..db6a72c 100644
---- a/module/zfs/zpl_file.c
-+++ b/module/zfs/zpl_file.c
-@@ -446,7 +446,6 @@
- .llseek = generic_file_llseek,
- .read = zpl_read,
- .write = zpl_write,
-- .readdir = zpl_readdir,
- .mmap = zpl_mmap,
- .fsync = zpl_fsync,
- #ifdef HAVE_FILE_FALLOCATE
---
-1.8.1.6
-
diff --git a/sys-fs/zfs-kmod/files/zfs-kmod-0.6.1-fix-txg_quiesce-deadlock.patch b/sys-fs/zfs-kmod/files/zfs-kmod-0.6.1-fix-txg_quiesce-deadlock.patch
deleted file mode 100644
index 8513e78882b1..000000000000
--- a/sys-fs/zfs-kmod/files/zfs-kmod-0.6.1-fix-txg_quiesce-deadlock.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-From 57f5a2008e2e6acf58934cf43c5fdca0faffa73e Mon Sep 17 00:00:00 2001
-From: Brian Behlendorf <behlendorf1@llnl.gov>
-Date: Thu, 25 Apr 2013 16:29:22 -0700
-Subject: [PATCH] Fix txg_quiesce thread deadlock
-
-A deadlock was accidentally introduced by commit e95853a which
-can occur when the system is under memory pressure. What happens
-is that while the txg_quiesce thread is holding the tx->tx_cpu
-locks it enters memory reclaim. In the context of this memory
-reclaim it then issues synchronous I/O to a ZVOL swap device.
-Because the txg_quiesce thread is holding the tx->tx_cpu locks
-a new txg cannot be opened to handle the I/O. Deadlock.
-
-The fix is straight forward. Move the memory allocation outside
-the critical region where the tx->tx_cpu locks are held. And for
-good measure change the offending allocation to KM_PUSHPAGE to
-ensure it never attempts to issue I/O during reclaim.
-
-Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
-Issue #1274
----
- module/zfs/dsl_pool.c | 2 +-
- module/zfs/txg.c | 14 +++++++-------
- 2 files changed, 8 insertions(+), 8 deletions(-)
-
-diff --git a/module/zfs/dsl_pool.c b/module/zfs/dsl_pool.c
-index 704f034..771b265 100644
---- a/module/zfs/dsl_pool.c
-+++ b/module/zfs/dsl_pool.c
-@@ -143,7 +143,7 @@
- {
- txg_history_t *th, *rm;
-
-- th = kmem_zalloc(sizeof(txg_history_t), KM_SLEEP);
-+ th = kmem_zalloc(sizeof(txg_history_t), KM_PUSHPAGE);
- mutex_init(&th->th_lock, NULL, MUTEX_DEFAULT, NULL);
- th->th_kstat.txg = txg;
- th->th_kstat.state = TXG_STATE_OPEN;
-diff --git a/module/zfs/txg.c b/module/zfs/txg.c
-index c7c3df3..7c820af 100644
---- a/module/zfs/txg.c
-+++ b/module/zfs/txg.c
-@@ -367,6 +367,13 @@
- tx->tx_open_txg++;
-
- /*
-+ * Now that we've incremented tx_open_txg, we can let threads
-+ * enter the next transaction group.
-+ */
-+ for (c = 0; c < max_ncpus; c++)
-+ mutex_exit(&tx->tx_cpu[c].tc_lock);
-+
-+ /*
- * Measure how long the txg was open and replace the kstat.
- */
- th = dsl_pool_txg_history_get(dp, txg);
-@@ -376,13 +383,6 @@
- dsl_pool_txg_history_add(dp, tx->tx_open_txg);
-
- /*
-- * Now that we've incremented tx_open_txg, we can let threads
-- * enter the next transaction group.
-- */
-- for (c = 0; c < max_ncpus; c++)
-- mutex_exit(&tx->tx_cpu[c].tc_lock);
--
-- /*
- * Quiesce the transaction group by waiting for everyone to txg_exit().
- */
- start = gethrtime();
---
-1.8.1.6
-
diff --git a/sys-fs/zfs-kmod/files/zfs-kmod-0.6.1-fix-xattr-behavior-1.patch b/sys-fs/zfs-kmod/files/zfs-kmod-0.6.1-fix-xattr-behavior-1.patch
deleted file mode 100644
index b4801708ae35..000000000000
--- a/sys-fs/zfs-kmod/files/zfs-kmod-0.6.1-fix-xattr-behavior-1.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From f706421173c571371afff5e2a2ee0784c5e3f95d Mon Sep 17 00:00:00 2001
-From: Brian Behlendorf <behlendorf1@llnl.gov>
-Date: Wed, 17 Apr 2013 13:07:36 -0700
-Subject: [PATCH] Correctly return ERANGE in getxattr(2)
-
-According to the getxattr(2) man page the ERANGE errno should be
-returned when the size of the value buffer is to small to hold the
-result. Prior to this patch the implementation would just truncate
-the value to size bytes.
-
-Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
-Closes #1408
----
- module/zfs/zpl_xattr.c | 12 ++++++++++--
- 1 file changed, 10 insertions(+), 2 deletions(-)
-
-diff --git a/module/zfs/zpl_xattr.c b/module/zfs/zpl_xattr.c
-index c03764f..a7e38e6 100644
---- a/module/zfs/zpl_xattr.c
-+++ b/module/zfs/zpl_xattr.c
-@@ -225,6 +225,11 @@
- goto out;
- }
-
-+ if (size < i_size_read(xip)) {
-+ error = -ERANGE;
-+ goto out;
-+ }
-+
- error = zpl_read_common(xip, value, size, 0, UIO_SYSSPACE, 0, cr);
- out:
- if (xip)
-@@ -263,9 +268,12 @@
- if (!size)
- return (nv_size);
-
-- memcpy(value, nv_value, MIN(size, nv_size));
-+ if (size < nv_size)
-+ return (-ERANGE);
-+
-+ memcpy(value, nv_value, nv_size);
-
-- return (MIN(size, nv_size));
-+ return (nv_size);
- }
-
- static int
---
-1.8.1.6
-
diff --git a/sys-fs/zfs-kmod/files/zfs-kmod-0.6.1-fix-xattr-behavior-2.patch b/sys-fs/zfs-kmod/files/zfs-kmod-0.6.1-fix-xattr-behavior-2.patch
deleted file mode 100644
index bb4b1c4a3a34..000000000000
--- a/sys-fs/zfs-kmod/files/zfs-kmod-0.6.1-fix-xattr-behavior-2.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 0377189b884fab7db02a95088e05712c7cf336f7 Mon Sep 17 00:00:00 2001
-From: Brian Behlendorf <behlendorf1@llnl.gov>
-Date: Wed, 8 May 2013 09:20:04 -0700
-Subject: [PATCH] Only check directory xattr on ENOENT
-
-When SA xattrs are enabled only fallback to checking the directory
-xattrs when the name is not found as a SA xattr. Otherwise, the SA
-error which should be returned to the caller is overwritten by the
-directory xattr errors. Positive return values indicating success
-will also be immediately returned.
-
-In the case of #1437 the ERANGE error was being correctly returned
-by zpl_xattr_get_sa() only to be overridden with ENOENT which was
-returned by the subsequent unnessisary call to zpl_xattr_get_dir().
-
-Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
-Closes #1437
----
- module/zfs/zpl_xattr.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/module/zfs/zpl_xattr.c b/module/zfs/zpl_xattr.c
-index a7e38e6..eb2c00d 100644
---- a/module/zfs/zpl_xattr.c
-+++ b/module/zfs/zpl_xattr.c
-@@ -288,7 +288,7 @@
-
- if (zsb->z_use_sa && zp->z_is_sa) {
- error = zpl_xattr_get_sa(ip, name, value, size);
-- if (error >= 0)
-+ if (error != -ENOENT)
- goto out;
- }
-
---
-1.8.1.6
-
diff --git a/sys-fs/zfs-kmod/files/zfs-kmod-0.6.1-fix-zfs_sb_teardown-NULL-pointer-deref.patch b/sys-fs/zfs-kmod/files/zfs-kmod-0.6.1-fix-zfs_sb_teardown-NULL-pointer-deref.patch
deleted file mode 100644
index e59c869eed04..000000000000
--- a/sys-fs/zfs-kmod/files/zfs-kmod-0.6.1-fix-zfs_sb_teardown-NULL-pointer-deref.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From ab68b6e5db29abcd20c0c7b12a8c2fa570031c8b Mon Sep 17 00:00:00 2001
-From: Tim Chase <tim@chase2k.com>
-Date: Mon, 24 Jun 2013 22:03:56 -0500
-Subject: [PATCH] Fix zfs_sb_teardown/zfs_resume_fs NULL dereference
-
-Fix a pair of conditions in which a concurrent umount can cause
-NULL pointer dereferences:
-
-* zfs_sb_teardown - prevent a NULL dereference by not calling
- dmu_objset_pool with a null z_os.
-
-* zfs_resume_fs - don't try to unmount with a null z_os. This
- change makes the ZoL code more consistent
- with both Illumos and FreeBSD.
-
-Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
-Closes #1543
----
- module/zfs/zfs_vfsops.c | 13 ++++++++-----
- 1 file changed, 8 insertions(+), 5 deletions(-)
-
-diff --git a/module/zfs/zfs_vfsops.c b/module/zfs/zfs_vfsops.c
-index e618f2b..602c332 100644
---- a/module/zfs/zfs_vfsops.c
-+++ b/module/zfs/zfs_vfsops.c
-@@ -1056,10 +1056,12 @@
- }
-
- /*
-- * Drain the iput_taskq to ensure all active references to the
-+ * If someone has not already unmounted this file system,
-+ * drain the iput_taskq to ensure all active references to the
- * zfs_sb_t have been handled only then can it be safely destroyed.
- */
-- taskq_wait(dsl_pool_iput_taskq(dmu_objset_pool(zsb->z_os)));
-+ if (zsb->z_os)
-+ taskq_wait(dsl_pool_iput_taskq(dmu_objset_pool(zsb->z_os)));
-
- /*
- * Close the zil. NB: Can't close the zil while zfs_inactive
-@@ -1480,10 +1482,11 @@
-
- if (err) {
- /*
-- * Since we couldn't reopen zfs_sb_t, force
-- * unmount this file system.
-+ * Since we couldn't reopen zfs_sb_t or, setup the
-+ * sa framework, force unmount this file system.
- */
-- (void) zfs_umount(zsb->z_sb);
-+ if (zsb->z_os)
-+ (void) zfs_umount(zsb->z_sb);
- }
- return (err);
- }
---
-1.8.1.6
-
diff --git a/sys-fs/zfs-kmod/files/zfs-kmod-0.6.1-fix-zfsctl_expire_snapshot-deadlock.patch b/sys-fs/zfs-kmod/files/zfs-kmod-0.6.1-fix-zfsctl_expire_snapshot-deadlock.patch
deleted file mode 100644
index 7cca7d1137c8..000000000000
--- a/sys-fs/zfs-kmod/files/zfs-kmod-0.6.1-fix-zfsctl_expire_snapshot-deadlock.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-From 76351672c222f28ea1b681097a9eff58a6791555 Mon Sep 17 00:00:00 2001
-From: Brian Behlendorf <behlendorf1@llnl.gov>
-Date: Thu, 11 Jul 2013 14:11:32 -0700
-Subject: [PATCH] Fix zfsctl_expire_snapshot() deadlock
-
-It is possible for an automounted snapshot which is expiring to
-deadlock with a manual unmount of the snapshot. This can occur
-because taskq_cancel_id() will block if the task is currently
-executing until it completes. But it will never complete because
-zfsctl_unmount_snapshot() is holding the zsb->z_ctldir_lock which
-zfsctl_expire_snapshot() must acquire.
-
----------------------- z_unmount/0:2153 ---------------------
- mutex_lock <blocking on zsb->z_ctldir_lock>
- zfsctl_unmount_snapshot
- zfsctl_expire_snapshot
- taskq_thread
-
-------------------------- zfs:10690 -------------------------
- taskq_wait_id <waiting for z_unmount to exit>
- taskq_cancel_id
- __zfsctl_unmount_snapshot
- zfsctl_unmount_snapshot <takes zsb->z_ctldir_lock>
- zfs_unmount_snap
- zfs_ioc_destroy_snaps_nvl
- zfsdev_ioctl
- do_vfs_ioctl
-
-We resolve the deadlock by dropping the zsb->z_ctldir_lock before
-calling __zfsctl_unmount_snapshot(). The lock is only there to
-prevent concurrent modification to the zsb->z_ctldir_snaps AVL
-tree. Moreover, we're careful to remove the zfs_snapentry_t from
-the AVL tree before dropping the lock which ensures no other tasks
-can find it. On failure it's added back to the tree.
-
-Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
-Signed-off-by: Chris Dunlap <cdunlap@llnl.gov>
-Closes #1527
----
- module/zfs/zfs_ctldir.c | 8 ++++++++
- 1 file changed, 8 insertions(+)
-
-diff --git a/module/zfs/zfs_ctldir.c b/module/zfs/zfs_ctldir.c
-index 4fa530b..168f853 100644
---- a/module/zfs/zfs_ctldir.c
-+++ b/module/zfs/zfs_ctldir.c
-@@ -732,7 +732,11 @@ struct inode *
- sep = avl_find(&zsb->z_ctldir_snaps, &search, NULL);
- if (sep) {
- avl_remove(&zsb->z_ctldir_snaps, sep);
-+ mutex_exit(&zsb->z_ctldir_lock);
-+
- error = __zfsctl_unmount_snapshot(sep, flags);
-+
-+ mutex_enter(&zsb->z_ctldir_lock);
- if (error == EBUSY)
- avl_add(&zsb->z_ctldir_snaps, sep);
- else
-@@ -767,7 +771,11 @@ struct inode *
- while (sep != NULL) {
- next = AVL_NEXT(&zsb->z_ctldir_snaps, sep);
- avl_remove(&zsb->z_ctldir_snaps, sep);
-+ mutex_exit(&zsb->z_ctldir_lock);
-+
- error = __zfsctl_unmount_snapshot(sep, flags);
-+
-+ mutex_enter(&zsb->z_ctldir_lock);
- if (error == EBUSY) {
- avl_add(&zsb->z_ctldir_snaps, sep);
- (*count)++;
---
-1.8.1.6
-
diff --git a/sys-fs/zfs-kmod/files/zfs-kmod-0.6.1-fix-zvol-initialization-r1.patch b/sys-fs/zfs-kmod/files/zfs-kmod-0.6.1-fix-zvol-initialization-r1.patch
deleted file mode 100644
index b1e7d3736db0..000000000000
--- a/sys-fs/zfs-kmod/files/zfs-kmod-0.6.1-fix-zvol-initialization-r1.patch
+++ /dev/null
@@ -1,167 +0,0 @@
-diff --git a/module/zfs/spa.c b/module/zfs/spa.c
-index e986e92..65f78b7 100644
---- a/module/zfs/spa.c
-+++ b/module/zfs/spa.c
-@@ -64,6 +64,7 @@
- #include <sys/zfs_ioctl.h>
- #include <sys/dsl_scan.h>
- #include <sys/zfeature.h>
-+#include <sys/zvol.h>
-
- #ifdef _KERNEL
- #include <sys/bootprops.h>
-@@ -2856,6 +2857,7 @@ spa_open_common(const char *pool, spa_t **spapp, void *tag, nvlist_t *nvpolicy,
- spa_load_state_t state = SPA_LOAD_OPEN;
- int error;
- int locked = B_FALSE;
-+ int firstopen = B_FALSE;
-
- *spapp = NULL;
-
-@@ -2879,6 +2881,8 @@ spa_open_common(const char *pool, spa_t **spapp, void *tag, nvlist_t *nvpolicy,
- if (spa->spa_state == POOL_STATE_UNINITIALIZED) {
- zpool_rewind_policy_t policy;
-
-+ firstopen = B_TRUE;
-+
- zpool_get_rewind_policy(nvpolicy ? nvpolicy : spa->spa_config,
- &policy);
- if (policy.zrp_request & ZPOOL_DO_REWIND)
-@@ -2953,6 +2957,11 @@ spa_open_common(const char *pool, spa_t **spapp, void *tag, nvlist_t *nvpolicy,
- mutex_exit(&spa_namespace_lock);
- }
-
-+#ifdef _KERNEL
-+ if (firstopen)
-+ zvol_create_minors(spa->spa_name);
-+#endif
-+
- *spapp = spa;
-
- return (0);
-@@ -4010,6 +4019,10 @@ spa_import(const char *pool, nvlist_t *config, nvlist_t *props, uint64_t flags)
- mutex_exit(&spa_namespace_lock);
- spa_history_log_version(spa, LOG_POOL_IMPORT);
-
-+#ifdef _KERNEL
-+ zvol_create_minors(pool);
-+#endif
-+
- return (0);
- }
-
-diff --git a/module/zfs/zfs_ioctl.c b/module/zfs/zfs_ioctl.c
-index 1226b2c..a9184a1 100644
---- a/module/zfs/zfs_ioctl.c
-+++ b/module/zfs/zfs_ioctl.c
-@@ -1268,9 +1268,6 @@ zfs_ioc_pool_import(zfs_cmd_t *zc)
- error = err;
- }
-
-- if (error == 0)
-- zvol_create_minors(zc->zc_name);
--
- nvlist_free(config);
-
- if (props)
-diff --git a/module/zfs/zvol.c b/module/zfs/zvol.c
-index 43a7bb6..e35c91b 100644
---- a/module/zfs/zvol.c
-+++ b/module/zfs/zvol.c
-@@ -1215,6 +1215,9 @@ zvol_alloc(dev_t dev, const char *name)
-
- zv = kmem_zalloc(sizeof (zvol_state_t), KM_SLEEP);
-
-+ spin_lock_init(&zv->zv_lock);
-+ list_link_init(&zv->zv_next);
-+
- zv->zv_queue = blk_init_queue(zvol_request, &zv->zv_lock);
- if (zv->zv_queue == NULL)
- goto out_kmem;
-@@ -1248,9 +1251,6 @@ zvol_alloc(dev_t dev, const char *name)
- sizeof (rl_t), offsetof(rl_t, r_node));
- zv->zv_znode.z_is_zvol = TRUE;
-
-- spin_lock_init(&zv->zv_lock);
-- list_link_init(&zv->zv_next);
--
- zv->zv_disk->major = zvol_major;
- zv->zv_disk->first_minor = (dev & MINORMASK);
- zv->zv_disk->fops = &zvol_ops;
-@@ -1561,30 +1561,36 @@ zvol_init(void)
- {
- int error;
-
-+ list_create(&zvol_state_list, sizeof (zvol_state_t),
-+ offsetof(zvol_state_t, zv_next));
-+ mutex_init(&zvol_state_lock, NULL, MUTEX_DEFAULT, NULL);
-+
- zvol_taskq = taskq_create(ZVOL_DRIVER, zvol_threads, maxclsyspri,
- zvol_threads, INT_MAX, TASKQ_PREPOPULATE);
- if (zvol_taskq == NULL) {
- printk(KERN_INFO "ZFS: taskq_create() failed\n");
-- return (-ENOMEM);
-+ error = -ENOMEM;
-+ goto out1;
- }
-
- error = register_blkdev(zvol_major, ZVOL_DRIVER);
- if (error) {
- printk(KERN_INFO "ZFS: register_blkdev() failed %d\n", error);
-- taskq_destroy(zvol_taskq);
-- return (error);
-+ goto out2;
- }
-
- blk_register_region(MKDEV(zvol_major, 0), 1UL << MINORBITS,
- THIS_MODULE, zvol_probe, NULL, NULL);
-
-- mutex_init(&zvol_state_lock, NULL, MUTEX_DEFAULT, NULL);
-- list_create(&zvol_state_list, sizeof (zvol_state_t),
-- offsetof(zvol_state_t, zv_next));
-+ return (0);
-
-- (void) zvol_create_minors(NULL);
-+out2:
-+ taskq_destroy(zvol_taskq);
-+out1:
-+ mutex_destroy(&zvol_state_lock);
-+ list_destroy(&zvol_state_list);
-
-- return (0);
-+ return (error);
- }
-
- void
-diff --git a/scripts/zconfig.sh b/scripts/zconfig.sh
-index 141348c..281166c 100755
---- a/scripts/zconfig.sh
-+++ b/scripts/zconfig.sh
-@@ -264,8 +264,9 @@ test_4() {
- zconfig_zvol_device_stat 0 ${POOL_NAME} ${FULL_ZVOL_NAME} \
- ${FULL_SNAP_NAME} ${FULL_CLONE_NAME} || fail 9
-
-- # Load the modules, wait 1 second for udev
-+ # Load the modules, list the pools to ensure they are opened
- ${ZFS_SH} zfs="spa_config_path=${TMP_CACHE}" || fail 10
-+ ${ZPOOL} list &>/dev/null
-
- # Verify the devices were created
- zconfig_zvol_device_stat 10 ${POOL_NAME} ${FULL_ZVOL_NAME} \
-diff --git a/udev/rules.d/90-zfs.rules.in b/udev/rules.d/90-zfs.rules.in
-index 52e1d63..a2715d2 100644
---- a/udev/rules.d/90-zfs.rules.in
-+++ b/udev/rules.d/90-zfs.rules.in
-@@ -1,4 +1,4 @@
--SUBSYSTEM!="block", GOTO="zfs_end"
-+SUBSYSTEM!="block|misc", GOTO="zfs_end"
- ACTION!="add|change", GOTO="zfs_end"
-
- ENV{ID_FS_TYPE}=="zfs", RUN+="/sbin/modprobe zfs"
-@@ -7,4 +7,6 @@ ENV{ID_FS_TYPE}=="zfs_member", RUN+="/sbin/modprobe zfs"
- KERNEL=="null", SYMLINK+="root"
- SYMLINK=="null", SYMLINK+="root"
-
-+SUBSYSTEM=="misc", KERNEL=="zfs", RUN+="@sbindir@/zpool list"
-+
- LABEL="zfs_end"
diff --git a/sys-fs/zfs-kmod/files/zfs-kmod-0.6.1-linux-3.10-compat.patch b/sys-fs/zfs-kmod/files/zfs-kmod-0.6.1-linux-3.10-compat.patch
deleted file mode 100644
index 90755a1a527f..000000000000
--- a/sys-fs/zfs-kmod/files/zfs-kmod-0.6.1-linux-3.10-compat.patch
+++ /dev/null
@@ -1,108 +0,0 @@
-commit a1d9543a39942be56879ca9338078afc77c25cea
-Author: Chris Dunlop <chris@onthe.net.au>
-Date: Mon Jun 3 16:58:52 2013 +1000
-
- 3.10 API change: block_device_operations->release() returns void
-
- Linux kernel commit torvalds/linux@db2a144 changed the return type
- of block_device_operations->release() to void. Detect the expected
- prototype and defined our callout accordingly.
-
- Signed-off-by: Chris Dunlop <chris@onthe.net.au>
- Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
- Closes #1494
-
-diff --git a/config/kernel-bdev-block-device-operations.m4 b/config/kernel-bdev-block-device-operations.m4
-index 8b5e0a3..faacc19 100644
---- a/config/kernel-bdev-block-device-operations.m4
-+++ b/config/kernel-bdev-block-device-operations.m4
-@@ -10,7 +10,6 @@ AC_DEFUN([ZFS_AC_KERNEL_BDEV_BLOCK_DEVICE_OPERATIONS], [
-
- int blk_open(struct block_device *bdev, fmode_t mode)
- { return 0; }
-- int blk_release(struct gendisk *g, fmode_t mode) { return 0; }
- int blk_ioctl(struct block_device *bdev, fmode_t mode,
- unsigned x, unsigned long y) { return 0; }
- int blk_compat_ioctl(struct block_device * bdev, fmode_t mode,
-@@ -19,7 +18,7 @@ AC_DEFUN([ZFS_AC_KERNEL_BDEV_BLOCK_DEVICE_OPERATIONS], [
- static const struct block_device_operations
- bops __attribute__ ((unused)) = {
- .open = blk_open,
-- .release = blk_release,
-+ .release = NULL,
- .ioctl = blk_ioctl,
- .compat_ioctl = blk_compat_ioctl,
- };
-diff --git a/config/kernel-block-device-operations-release-void.m4 b/config/kernel-block-device-operations-release-void.m4
-new file mode 100644
-index 0000000..a73f858
---- /dev/null
-+++ b/config/kernel-block-device-operations-release-void.m4
-@@ -0,0 +1,29 @@
-+dnl #
-+dnl # 3.10.x API change
-+dnl #
-+AC_DEFUN([ZFS_AC_KERNEL_BLOCK_DEVICE_OPERATIONS_RELEASE_VOID], [
-+ AC_MSG_CHECKING([whether block_device_operations.release is void])
-+ tmp_flags="$EXTRA_KCFLAGS"
-+ EXTRA_KCFLAGS="${NO_UNUSED_BUT_SET_VARIABLE}"
-+ ZFS_LINUX_TRY_COMPILE([
-+ #include <linux/blkdev.h>
-+
-+ void blk_release(struct gendisk *g, fmode_t mode) { return; }
-+
-+ static const struct block_device_operations
-+ bops __attribute__ ((unused)) = {
-+ .open = NULL,
-+ .release = blk_release,
-+ .ioctl = NULL,
-+ .compat_ioctl = NULL,
-+ };
-+ ],[
-+ ],[
-+ AC_MSG_RESULT(void)
-+ AC_DEFINE(HAVE_BLOCK_DEVICE_OPERATIONS_RELEASE_VOID, 1,
-+ [struct block_device_operations.release returns void])
-+ ],[
-+ AC_MSG_RESULT(int)
-+ ])
-+ EXTRA_KCFLAGS="$tmp_flags"
-+])
-diff --git a/config/kernel.m4 b/config/kernel.m4
-index 7b8e3b0..46c0255 100644
---- a/config/kernel.m4
-+++ b/config/kernel.m4
-@@ -7,6 +7,7 @@ AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [
- ZFS_AC_TEST_MODULE
- ZFS_AC_KERNEL_CONFIG
- ZFS_AC_KERNEL_BDEV_BLOCK_DEVICE_OPERATIONS
-+ ZFS_AC_KERNEL_BLOCK_DEVICE_OPERATIONS_RELEASE_VOID
- ZFS_AC_KERNEL_TYPE_FMODE_T
- ZFS_AC_KERNEL_KOBJ_NAME_LEN
- ZFS_AC_KERNEL_3ARG_BLKDEV_GET
-diff --git a/module/zfs/zvol.c b/module/zfs/zvol.c
-index e35c91b..b516156 100644
---- a/module/zfs/zvol.c
-+++ b/module/zfs/zvol.c
-@@ -1024,7 +1024,11 @@ out_mutex:
- return (error);
- }
-
-+#ifdef HAVE_BLOCK_DEVICE_OPERATIONS_RELEASE_VOID
-+static void
-+#else
- static int
-+#endif
- zvol_release(struct gendisk *disk, fmode_t mode)
- {
- zvol_state_t *zv = disk->private_data;
-@@ -1044,7 +1048,9 @@ zvol_release(struct gendisk *disk, fmode_t mode)
- if (drop_mutex)
- mutex_exit(&zvol_state_lock);
-
-+#ifndef HAVE_BLOCK_DEVICE_OPERATIONS_RELEASE_VOID
- return (0);
-+#endif
- }
-
- static int
diff --git a/sys-fs/zfs-kmod/files/zfs-kmod-0.6.5-discard-on-zvol-fix.patch b/sys-fs/zfs-kmod/files/zfs-kmod-0.6.5-discard-on-zvol-fix.patch
deleted file mode 100644
index 632d08d28e1f..000000000000
--- a/sys-fs/zfs-kmod/files/zfs-kmod-0.6.5-discard-on-zvol-fix.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 96165264ad0afe7a5d440ef49f9712a188486266 Mon Sep 17 00:00:00 2001
-From: Richard Yao <ryao@gentoo.org>
-Date: Fri, 18 Sep 2015 08:32:52 -0400
-Subject: [PATCH] Discard on zvols should not exceed the length of a block
-
-37f9dac592bf5889c3efb305c48ac39b4c7dd140 replaced the end-start
-calculation with a cached value, but neglected to update it on discard
-operations. This can cause us to discard data not requested, causing
-data loss on zvols.
-
-Reported-by: Richard Connon <richard.connon@zynstra.com>
-Signed-off-by: Richard Yao <ryao@gentoo.org>
----
- module/zfs/zvol.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/module/zfs/zvol.c b/module/zfs/zvol.c
-index 492f8ff..c5a8071 100644
---- a/module/zfs/zvol.c
-+++ b/module/zfs/zvol.c
-@@ -661,6 +661,7 @@ zvol_discard(struct bio *bio)
- if (!(bio->bi_rw & REQ_SECURE)) {
- start = P2ROUNDUP(start, zv->zv_volblocksize);
- end = P2ALIGN(end, zv->zv_volblocksize);
-+ size = end - start;
- }
- #endif
-
---
-2.4.6
-