Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=kernelbump.git;a=commitdiff;h=9484dda6992ee6c82911d4b5a20e918bb7e63e1e
commit 9484dda6992ee6c82911d4b5a20e918bb7e63e1e Author: DeX77 <[email protected]> Date: Tue Nov 3 10:38:41 2015 +0100 zfs-0.6.5.3-1-x86_64 version bump / rebuild with kernel 4.3 diff --git a/source/base-extra/zfs/0005-Linux-4.2-compat-bdi_setup_and_register.patch b/source/base-extra/zfs/0005-Linux-4.2-compat-bdi_setup_and_register.patch deleted file mode 100644 index ef228bf..0000000 --- a/source/base-extra/zfs/0005-Linux-4.2-compat-bdi_setup_and_register.patch +++ /dev/null @@ -1,32 +0,0 @@ -From e80da86447174b583e4b6cebedae2956fac926ee Mon Sep 17 00:00:00 2001 -From: Brian Behlendorf <[email protected]> -Date: Tue, 14 Jul 2015 14:15:13 -0700 -Subject: [PATCH] Linux 4.2 compat: bdi_setup_and_register() - -The vfs_compat.h header should include the linux/backing-dev.h header -because it depends on the bdi_* functions defined there. In previous -kernels this header was being indirectly included which prevented a -build failure. - -Signed-off-by: Brian Behlendorf <[email protected]> -Signed-off-by: Richard Yao <[email protected]> -Closes #3596 ---- - include/linux/vfs_compat.h | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/include/linux/vfs_compat.h b/include/linux/vfs_compat.h -index e8f8448..40832d9 100644 ---- a/include/linux/vfs_compat.h -+++ b/include/linux/vfs_compat.h -@@ -28,6 +28,7 @@ - #define _ZFS_VFS_H - - #include <sys/taskq.h> -+#include <linux/backing-dev.h> - - /* - * 2.6.28 API change, --- -2.5.0 - diff --git a/source/base-extra/zfs/0006-Linux-4.2-compat-remove-bio-bi_cnt-access.patch b/source/base-extra/zfs/0006-Linux-4.2-compat-remove-bio-bi_cnt-access.patch deleted file mode 100644 index d5b5f18..0000000 --- a/source/base-extra/zfs/0006-Linux-4.2-compat-remove-bio-bi_cnt-access.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 7eb333fbdde32dbebdcc88c35610159e207237c9 Mon Sep 17 00:00:00 2001 -From: Brian Behlendorf <[email protected]> -Date: Tue, 14 Jul 2015 14:57:55 -0700 -Subject: [PATCH] Linux 4.2 compat: remove bio->bi_cnt access - -Linux 4.2 commit torvalds/linux@dac5621 renamed bio->bi_cnt to -bio->__bi_cnt. Because this value is only used once in a block of -debug code it simplest just to remove the PANIC. To my knowledge -this debugging has never been hit or proved useful so this is no -great loss. - -Signed-off-by: Brian Behlendorf <[email protected]> -Signed-off-by: Richard Yao <[email protected]> -Closes #3596 ---- - module/zfs/vdev_disk.c | 9 --------- - 1 file changed, 9 deletions(-) - -diff --git a/module/zfs/vdev_disk.c b/module/zfs/vdev_disk.c -index 9cfc080..eb77c26 100644 ---- a/module/zfs/vdev_disk.c -+++ b/module/zfs/vdev_disk.c -@@ -426,15 +426,6 @@ BIO_END_IO_PROTO(vdev_disk_physio_completion, bio, size, error) - dio_request_t *dr = bio->bi_private; - int rc; - -- /* Fatal error but print some useful debugging before asserting */ -- if (dr == NULL) -- PANIC("dr == NULL, bio->bi_private == NULL\n" -- "bi_next: %p, bi_flags: %lx, bi_rw: %lu, bi_vcnt: %d\n" -- "bi_idx: %d, bi_size: %d, bi_end_io: %p, bi_cnt: %d\n", -- bio->bi_next, bio->bi_flags, bio->bi_rw, bio->bi_vcnt, -- BIO_BI_IDX(bio), BIO_BI_SIZE(bio), bio->bi_end_io, -- atomic_read(&bio->bi_cnt)); -- - #ifndef HAVE_2ARGS_BIO_END_IO_T - if (BIO_BI_SIZE(bio)) - return (1); --- -2.5.0 - diff --git a/source/base-extra/zfs/0007-Linux-4.2-compat-follow_link-put_link.patch b/source/base-extra/zfs/0007-Linux-4.2-compat-follow_link-put_link.patch deleted file mode 100644 index e48b190..0000000 --- a/source/base-extra/zfs/0007-Linux-4.2-compat-follow_link-put_link.patch +++ /dev/null @@ -1,217 +0,0 @@ -From bd29109f1ac5be68f7f7c8bcb49e1b706fe899f0 Mon Sep 17 00:00:00 2001 -From: Brian Behlendorf <[email protected]> -Date: Wed, 15 Jul 2015 10:54:26 -0700 -Subject: [PATCH] Linux 4.2 compat: follow_link() / put_link() - -As of Linux 4.2 the kernel has completely retired the nameidata -structure. One of the few remaining consumers of this interface -were the follow_link() and put_link() callbacks. - -This patch adds the required checks to configure to detect the -interface change and updates the functions accordingly. Migrating -to the simple_follow_link() interface was considered but was decided -against ironically due to the increased complexity. - -It also should be noted that the kernel follow_link() and put_link() -interfaces changes several times after 4.1 and but before 4.2. This -means there is a narrow range of kernel commits which never appear -in an official tag of the Linux kernel which ZoL will not build. - -Signed-off-by: Brian Behlendorf <[email protected]> -Signed-off-by: Richard Yao <[email protected]> -Issue #3596 ---- - config/kernel-create-nameidata.m4 | 4 ++-- - config/kernel-follow-link-nameidata.m4 | 24 ++++++++++++++++++++++++ - config/kernel-lookup-nameidata.m4 | 4 ++-- - config/kernel-put-link-nameidata.m4 | 23 +++++++++++++++++++++++ - config/kernel.m4 | 2 ++ - module/zfs/zpl_inode.c | 31 +++++++++++++++++++++++++++---- - 6 files changed, 80 insertions(+), 8 deletions(-) - create mode 100644 config/kernel-follow-link-nameidata.m4 - create mode 100644 config/kernel-put-link-nameidata.m4 - -diff --git a/config/kernel-create-nameidata.m4 b/config/kernel-create-nameidata.m4 -index 9aad46f..a71490a 100644 ---- a/config/kernel-create-nameidata.m4 -+++ b/config/kernel-create-nameidata.m4 -@@ -2,7 +2,7 @@ dnl # - dnl # 3.6 API change - dnl # - AC_DEFUN([ZFS_AC_KERNEL_CREATE_NAMEIDATA], [ -- AC_MSG_CHECKING([whether iops->create() takes struct nameidata]) -+ AC_MSG_CHECKING([whether iops->create() passes nameidata]) - ZFS_LINUX_TRY_COMPILE([ - #include <linux/fs.h> - -@@ -22,7 +22,7 @@ AC_DEFUN([ZFS_AC_KERNEL_CREATE_NAMEIDATA], [ - ],[ - AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_CREATE_NAMEIDATA, 1, -- [iops->create() operation takes nameidata]) -+ [iops->create() passes nameidata]) - ],[ - AC_MSG_RESULT(no) - ]) -diff --git a/config/kernel-follow-link-nameidata.m4 b/config/kernel-follow-link-nameidata.m4 -new file mode 100644 -index 0000000..88c85ac ---- /dev/null -+++ b/config/kernel-follow-link-nameidata.m4 -@@ -0,0 +1,24 @@ -+dnl # -+dnl # 4.2 API change -+dnl # This kernel retired the nameidata structure which forced the -+dnl # restructuring of the follow_link() prototype and how it is called. -+dnl # We check for the new interface rather than detecting the old one. -+dnl # -+AC_DEFUN([ZFS_AC_KERNEL_FOLLOW_LINK], [ -+ AC_MSG_CHECKING([whether iops->follow_link() passes nameidata]) -+ ZFS_LINUX_TRY_COMPILE([ -+ #include <linux/fs.h> -+ const char *follow_link(struct dentry *de, void **cookie) -+ { return "symlink"; } -+ static struct inode_operations iops __attribute__ ((unused)) = { -+ .follow_link = follow_link, -+ }; -+ ],[ -+ ],[ -+ AC_MSG_RESULT(no) -+ ],[ -+ AC_MSG_RESULT(yes) -+ AC_DEFINE(HAVE_FOLLOW_LINK_NAMEIDATA, 1, -+ [iops->follow_link() nameidata]) -+ ]) -+]) -diff --git a/config/kernel-lookup-nameidata.m4 b/config/kernel-lookup-nameidata.m4 -index 6455603..43f5fb4 100644 ---- a/config/kernel-lookup-nameidata.m4 -+++ b/config/kernel-lookup-nameidata.m4 -@@ -2,7 +2,7 @@ dnl # - dnl # 3.6 API change - dnl # - AC_DEFUN([ZFS_AC_KERNEL_LOOKUP_NAMEIDATA], [ -- AC_MSG_CHECKING([whether iops->lookup() takes struct nameidata]) -+ AC_MSG_CHECKING([whether iops->lookup() passes nameidata]) - ZFS_LINUX_TRY_COMPILE([ - #include <linux/fs.h> - -@@ -18,7 +18,7 @@ AC_DEFUN([ZFS_AC_KERNEL_LOOKUP_NAMEIDATA], [ - ],[ - AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_LOOKUP_NAMEIDATA, 1, -- [iops->lookup() operation takes nameidata]) -+ [iops->lookup() passes nameidata]) - ],[ - AC_MSG_RESULT(no) - ]) -diff --git a/config/kernel-put-link-nameidata.m4 b/config/kernel-put-link-nameidata.m4 -new file mode 100644 -index 0000000..0181ae5 ---- /dev/null -+++ b/config/kernel-put-link-nameidata.m4 -@@ -0,0 +1,23 @@ -+dnl # -+dnl # 4.2 API change -+dnl # This kernel retired the nameidata structure which forced the -+dnl # restructuring of the put_link() prototype and how it is called. -+dnl # We check for the new interface rather than detecting the old one. -+dnl # -+AC_DEFUN([ZFS_AC_KERNEL_PUT_LINK], [ -+ AC_MSG_CHECKING([whether iops->put_link() passes nameidata]) -+ ZFS_LINUX_TRY_COMPILE([ -+ #include <linux/fs.h> -+ void put_link(struct inode *ip, void *cookie) { return; } -+ static struct inode_operations iops __attribute__ ((unused)) = { -+ .put_link = put_link, -+ }; -+ ],[ -+ ],[ -+ AC_MSG_RESULT(no) -+ ],[ -+ AC_MSG_RESULT(yes) -+ AC_DEFINE(HAVE_PUT_LINK_NAMEIDATA, 1, -+ [iops->put_link() nameidata]) -+ ]) -+]) -diff --git a/config/kernel.m4 b/config/kernel.m4 -index 806c574..5c97659 100644 ---- a/config/kernel.m4 -+++ b/config/kernel.m4 -@@ -70,6 +70,8 @@ AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [ - ZFS_AC_KERNEL_MKDIR_UMODE_T - ZFS_AC_KERNEL_LOOKUP_NAMEIDATA - ZFS_AC_KERNEL_CREATE_NAMEIDATA -+ ZFS_AC_KERNEL_FOLLOW_LINK -+ ZFS_AC_KERNEL_PUT_LINK - ZFS_AC_KERNEL_TRUNCATE_RANGE - ZFS_AC_KERNEL_AUTOMOUNT - ZFS_AC_KERNEL_ENCODE_FH_WITH_INODE -diff --git a/module/zfs/zpl_inode.c b/module/zfs/zpl_inode.c -index 31251e7..70b5e12 100644 ---- a/module/zfs/zpl_inode.c -+++ b/module/zfs/zpl_inode.c -@@ -348,8 +348,13 @@ zpl_symlink(struct inode *dir, struct dentry *dentry, const char *name) - return (error); - } - -+#ifdef HAVE_FOLLOW_LINK_NAMEIDATA - static void * - zpl_follow_link(struct dentry *dentry, struct nameidata *nd) -+#else -+const char * -+zpl_follow_link(struct dentry *dentry, void **symlink_cookie) -+#endif - { - cred_t *cr = CRED(); - struct inode *ip = dentry->d_inode; -@@ -372,17 +377,28 @@ zpl_follow_link(struct dentry *dentry, struct nameidata *nd) - cookie = spl_fstrans_mark(); - error = -zfs_readlink(ip, &uio, cr); - spl_fstrans_unmark(cookie); -- if (error) { -+ -+ if (error) - kmem_free(link, MAXPATHLEN); -+ -+ crfree(cr); -+ -+#ifdef HAVE_FOLLOW_LINK_NAMEIDATA -+ if (error) - nd_set_link(nd, ERR_PTR(error)); -- } else { -+ else - nd_set_link(nd, link); -- } - -- crfree(cr); - return (NULL); -+#else -+ if (error) -+ return (ERR_PTR(error)); -+ else -+ return (*symlink_cookie = link); -+#endif - } - -+#ifdef HAVE_PUT_LINK_NAMEIDATA - static void - zpl_put_link(struct dentry *dentry, struct nameidata *nd, void *ptr) - { -@@ -391,6 +407,13 @@ zpl_put_link(struct dentry *dentry, struct nameidata *nd, void *ptr) - if (!IS_ERR(link)) - kmem_free(link, MAXPATHLEN); - } -+#else -+static void -+zpl_put_link(struct inode *unused, void *symlink_cookie) -+{ -+ kmem_free(symlink_cookie, MAXPATHLEN); -+} -+#endif - - static int - zpl_link(struct dentry *old_dentry, struct inode *dir, struct dentry *dentry) --- -2.5.0 - diff --git a/source/base-extra/zfs/0008-Linux-4.2-compat-vfs_rename.patch b/source/base-extra/zfs/0008-Linux-4.2-compat-vfs_rename.patch deleted file mode 100644 index 2f8f1f3..0000000 --- a/source/base-extra/zfs/0008-Linux-4.2-compat-vfs_rename.patch +++ /dev/null @@ -1,100 +0,0 @@ -From efc412b645cbb209e42983a9dcb9d3c9427c5495 Mon Sep 17 00:00:00 2001 -From: Brian Behlendorf <[email protected]> -Date: Tue, 28 Jul 2015 16:45:17 -0700 -Subject: [PATCH] Linux 4.2 compat: vfs_rename() - -The spa_config_write() function relies on the classic method of -making sure updates to the /etc/zfs/zpool.cache file are atomic. -It writes out a temporary version of the file and then uses -vn_rename() to switch it in to place. This way there can never -exist a partial version of the file, it's all or nothing. - -Conceptually this is a good strategy and it makes good sense -for platforms where it's easy to do a rename within the kernel. -Unfortunately, Linux is not one of those platforms. Even doing -basic I/O to a file system from within the kernel is strongly -discouraged. In order to support this at all the vn_rename() -implementation ends up being complex and fragile. So fragile -that recent Linux 4.2 changes have broken it. - -While it is possible to update vn_rename() to work with the -latest kernels a better long term strategy is to stop using -vn_rename() entirely. Then all this complex, fragile code can -be removed. Achieving this is straight forward because -config_write() is the only consumer of vn_rename(). - -This patch reworks spa_config_write() to update the cache file -in place. The file will be truncated, written out, and then -synced to disk. If an error is encountered the file will be -unlinked leaving the system in a consistent state. - -This does expose a tiny tiny tiny window where a system could -crash at exactly the wrong moment could leave a partially written -cache file. However, this is highly unlikely because the cache -file is 1) infrequently updated, 2) only a few kilobytes in size, -and 3) written with a single vn_rdwr() call. - -If this were to somehow happen it poses no risk to pool. Simply -removing the cache file will allow the pool to be imported cleanly. -Going forward this will be even less of an issue as we intend to -disable the use of a cache file by default. - -Bottom line not using vn_rename() allows us to make ZoL more -robust against upstream kernel changes. - -Signed-off-by: Brian Behlendorf <[email protected]> -Closes #3653 ---- - module/zfs/spa_config.c | 22 ++++++++++++++++++++++ - 1 file changed, 22 insertions(+) - -diff --git a/module/zfs/spa_config.c b/module/zfs/spa_config.c -index e846ec9..929f181 100644 ---- a/module/zfs/spa_config.c -+++ b/module/zfs/spa_config.c -@@ -152,6 +152,7 @@ spa_config_write(spa_config_dirent_t *dp, nvlist_t *nvl) - char *buf; - vnode_t *vp; - int oflags = FWRITE | FTRUNC | FCREAT | FOFFMAX; -+ int error; - char *temp; - - /* -@@ -173,6 +174,26 @@ spa_config_write(spa_config_dirent_t *dp, nvlist_t *nvl) - VERIFY(nvlist_pack(nvl, &buf, &buflen, NV_ENCODE_XDR, - KM_SLEEP) == 0); - -+#ifdef __linux__ -+ /* -+ * Write the configuration to disk. Due to the complexity involved -+ * in performing a rename from within the kernel the file is truncated -+ * and overwritten in place. In the event of an error the file is -+ * unlinked to make sure we always have a consistent view of the data. -+ */ -+ error = vn_open(dp->scd_path, UIO_SYSSPACE, oflags, 0644, &vp, 0, 0); -+ if (error == 0) { -+ error = vn_rdwr(UIO_WRITE, vp, buf, buflen, 0, -+ UIO_SYSSPACE, 0, RLIM64_INFINITY, kcred, NULL); -+ if (error == 0) -+ error = VOP_FSYNC(vp, FSYNC, kcred, NULL); -+ -+ (void) VOP_CLOSE(vp, oflags, 1, 0, kcred, NULL); -+ -+ if (error) -+ (void) vn_remove(dp->scd_path, UIO_SYSSPACE, RMFILE); -+ } -+#else - /* - * Write the configuration to disk. We need to do the traditional - * 'write to temporary file, sync, move over original' to make sure we -@@ -190,6 +211,7 @@ spa_config_write(spa_config_dirent_t *dp, nvlist_t *nvl) - } - - (void) vn_remove(temp, UIO_SYSSPACE, RMFILE); -+#endif - - vmem_free(buf, buflen); - kmem_free(temp, MAXPATHLEN); --- -2.5.0 - diff --git a/source/base-extra/zfs/0009-Linux-4.2-compat-misc_deregister.patch b/source/base-extra/zfs/0009-Linux-4.2-compat-misc_deregister.patch deleted file mode 100644 index 53f8640..0000000 --- a/source/base-extra/zfs/0009-Linux-4.2-compat-misc_deregister.patch +++ /dev/null @@ -1,55 +0,0 @@ -From 324dcd373371fbc2855406444c1c106722970c18 Mon Sep 17 00:00:00 2001 -From: Brian Behlendorf <[email protected]> -Date: Tue, 1 Sep 2015 09:23:02 -0700 -Subject: [PATCH] Linux 4.2 compat: misc_deregister() - -The misc_deregister() function was changed to a void return type. -Rather than add compatibility code to detect this change simply -ignore the return code on all kernels. It was only used to log -an informational error message of no real value. - -Signed-off-by: Brian Behlendorf <[email protected]> ---- - module/zfs/zfs_ioctl.c | 6 +----- - module/zpios/pios.c | 6 +----- - 2 files changed, 2 insertions(+), 10 deletions(-) - -diff --git a/module/zfs/zfs_ioctl.c b/module/zfs/zfs_ioctl.c -index ba695dd..61bc4b8 100644 ---- a/module/zfs/zfs_ioctl.c -+++ b/module/zfs/zfs_ioctl.c -@@ -6028,13 +6028,9 @@ zfs_attach(void) - static void - zfs_detach(void) - { -- int error; - zfsdev_state_t *zs, *zsprev = NULL; - -- error = misc_deregister(&zfs_misc); -- if (error != 0) -- printk(KERN_INFO "ZFS: misc_deregister() failed %d\n", error); -- -+ misc_deregister(&zfs_misc); - mutex_destroy(&zfsdev_state_lock); - - for (zs = zfsdev_state_list; zs != NULL; zs = zs->zs_next) { -diff --git a/module/zpios/pios.c b/module/zpios/pios.c -index 8e5077d..e3a85c1 100644 ---- a/module/zpios/pios.c -+++ b/module/zpios/pios.c -@@ -1310,11 +1310,7 @@ zpios_init(void) - static void __exit - zpios_fini(void) - { -- int error; -- -- error = misc_deregister(&zpios_misc); -- if (error) -- printk(KERN_INFO "ZPIOS: misc_deregister() failed %d\n", error); -+ misc_deregister(&zpios_misc); - - printk(KERN_INFO "ZPIOS: Unloaded module v%s-%s%s\n", - ZFS_META_VERSION, ZFS_META_RELEASE, ZFS_DEBUG_STR); --- -2.5.0 - diff --git a/source/base-extra/zfs/FrugalBuild b/source/base-extra/zfs/FrugalBuild index 600bf5e..a69870b 100644 --- a/source/base-extra/zfs/FrugalBuild +++ b/source/base-extra/zfs/FrugalBuild @@ -2,31 +2,21 @@ # Maintainer: James Buren <[email protected]> pkgname=zfs -pkgver=0.6.4.2 -pkgrel=5 +pkgver=0.6.5.3 +pkgrel=1 pkgdesc="ZFS" url="http://zfsonlinux.org" -rodepends=('spl') -makedepends=('spl-source') +rodepends=("spl>=$pkgver") +makedepends=("spl-source>=$pkgver") groups=('base-extra') archs=('!i686' 'x86_64') up2date="Flasttar $url" backup=(etc/zfs/vdev_id.conf etc/zfs/zed.d/zed.rc) source=(http://archive.zfsonlinux.org/downloads/zfsonlinux/$pkgname/$pkgname-$pkgver.tar.gz \ - fixes.patch \ - 0005-Linux-4.2-compat-bdi_setup_and_register.patch \ - 0006-Linux-4.2-compat-remove-bio-bi_cnt-access.patch \ - 0007-Linux-4.2-compat-follow_link-put_link.patch \ - 0008-Linux-4.2-compat-vfs_rename.patch \ - 0009-Linux-4.2-compat-misc_deregister.patch ) + fixes.patch) -sha1sums=('e4e25a594db919ff1c6a332fa89a9ea7657dccf8' \ - '3bfa05d3bf2e72de3ee1da65a68b5634caa3f562' \ - '96e2f0e373c40f381f0e83824f2959b8204f6061' \ - 'c0d5547402eb5af53d6dfcc5fd1d536b55338850' \ - '72fb37db4c546fbe093f5867f2b8ee28e34d1502' \ - '5ce21bfce8b6bfc765a6f12b74244dbad38bc586' \ - '7d909dff13b059d617157eca92cdaa77b0217460') +sha1sums=('736177ce61e3749208549c0c1ecca8a7f12f9e3d' \ + '3bfa05d3bf2e72de3ee1da65a68b5634caa3f562') options=('nobuild') Finclude kernel-module _______________________________________________ Frugalware-git mailing list [email protected] http://frugalware.org/mailman/listinfo/frugalware-git
