]> git.proxmox.com Git - mirror_spl.git/commitdiff
Linux 4.2 compat: vfs_rename()
authorBrian Behlendorf <behlendorf1@llnl.gov>
Wed, 19 Aug 2015 21:48:21 +0000 (14:48 -0700)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Wed, 19 Aug 2015 23:03:29 +0000 (16:03 -0700)
Attempting to perform a vfs_rename() on Linux 4.2 and newer kernels
results in an EACCES error.  Rather than attempting to add and
maintain more ugly compatibility code it's best to just retire
this interface.  As a first step the SPLAT test is disabled for
Linux 4.2 and newer kernels.

  vn_rename: Failed vn_rename /tmp/vn.tmp.1 -> /tmp/vn.tmp.2 (13)

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Issue zfsonlinux/zfs#3653

module/splat/splat-internal.h
module/splat/splat-vnode.c

index 832132696d885d7f48a8a11f9708db521b442ce3..d00af90fa748d69f5d93cc06ac249ef6ccf29d59 100644 (file)
@@ -28,6 +28,7 @@
 #include "splat-ctl.h"
 #include <sys/mutex.h>
 #include <linux/file_compat.h>
+#include <linux/version.h>
 
 #define SPLAT_SUBSYSTEM_INIT(type)                                      \
 ({      splat_subsystem_t *_sub_;                                       \
index f3f17ec9256677c2adf12c0a250a7d2516ac5885..bffcf492ff5dae3c607f7cb9a2c37f0feb30f406 100644 (file)
@@ -223,6 +223,7 @@ out:
         return -rc;
 } /* splat_vnode_test3() */
 
+#if LINUX_VERSION_CODE <= KERNEL_VERSION(4,1,0)
 static int
 splat_vnode_test4(struct file *file, void *arg)
 {
@@ -303,6 +304,7 @@ out:
 
         return -rc;
 } /* splat_vnode_test4() */
+#endif
 
 static int
 splat_vnode_test5(struct file *file, void *arg)
@@ -413,8 +415,10 @@ splat_vnode_init(void)
                        SPLAT_VNODE_TEST2_ID, splat_vnode_test2);
         SPLAT_TEST_INIT(sub, SPLAT_VNODE_TEST3_NAME, SPLAT_VNODE_TEST3_DESC,
                        SPLAT_VNODE_TEST3_ID, splat_vnode_test3);
+#if LINUX_VERSION_CODE <= KERNEL_VERSION(4,1,0)
         SPLAT_TEST_INIT(sub, SPLAT_VNODE_TEST4_NAME, SPLAT_VNODE_TEST4_DESC,
                        SPLAT_VNODE_TEST4_ID, splat_vnode_test4);
+#endif
         SPLAT_TEST_INIT(sub, SPLAT_VNODE_TEST5_NAME, SPLAT_VNODE_TEST5_DESC,
                        SPLAT_VNODE_TEST5_ID, splat_vnode_test5);
         SPLAT_TEST_INIT(sub, SPLAT_VNODE_TEST6_NAME, SPLAT_VNODE_TEST6_DESC,
@@ -430,7 +434,9 @@ splat_vnode_fini(splat_subsystem_t *sub)
 
         SPLAT_TEST_FINI(sub, SPLAT_VNODE_TEST6_ID);
         SPLAT_TEST_FINI(sub, SPLAT_VNODE_TEST5_ID);
+#if LINUX_VERSION_CODE <= KERNEL_VERSION(4,1,0)
         SPLAT_TEST_FINI(sub, SPLAT_VNODE_TEST4_ID);
+#endif
         SPLAT_TEST_FINI(sub, SPLAT_VNODE_TEST3_ID);
         SPLAT_TEST_FINI(sub, SPLAT_VNODE_TEST2_ID);
         SPLAT_TEST_FINI(sub, SPLAT_VNODE_TEST1_ID);