diff options
Diffstat (limited to 'sys-fs/zfs-kmod/files')
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 - |