diff options
author | Chen Haiquan <[email protected]> | 2016-08-04 23:57:35 +0800 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2016-08-11 12:06:37 -0700 |
commit | d9c97ec08b995f1a36657accc4bbc6057645a72c (patch) | |
tree | f2262c55fe0e9a4cd656c90553f9e95d20e28000 /config | |
parent | d5884c3453c5de5892eaae672c5186ed02846113 (diff) |
Use file_dentry and file_inode wrappers
Fix bugs due to kernel change in torvalds/linux@4bacc9c9234c ("overlayfs:
Make f_path always point to the overlay and f_inode to the underlay").
This problem crashes system when use zfs as a layer of overlayfs.
Signed-off-by: Chen Haiquan <[email protected]>
Signed-off-by: Brian Behlendorf <[email protected]>
Closes #4914
Closes #4935
Diffstat (limited to 'config')
-rw-r--r-- | config/kernel-file-dentry.m4 | 20 | ||||
-rw-r--r-- | config/kernel.m4 | 1 |
2 files changed, 21 insertions, 0 deletions
diff --git a/config/kernel-file-dentry.m4 b/config/kernel-file-dentry.m4 new file mode 100644 index 000000000..daf742ee1 --- /dev/null +++ b/config/kernel-file-dentry.m4 @@ -0,0 +1,20 @@ +dnl # +dnl # 4.1 API change +dnl # struct access file->f_path.dentry was replaced by accessor function +dnl # since fix torvalds/linux@4bacc9c9234c ("overlayfs: Make f_path always +dnl # point to the overlay and f_inode to the underlay"). +dnl # +AC_DEFUN([ZFS_AC_KERNEL_FILE_DENTRY], [ + AC_MSG_CHECKING([whether file_dentry() is available]) + ZFS_LINUX_TRY_COMPILE([ + #include <linux/fs.h> + ],[ + struct file *f = NULL; + file_dentry(f); + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_FILE_DENTRY, 1, [file_dentry() is available]) + ],[ + AC_MSG_RESULT(no) + ]) +]) diff --git a/config/kernel.m4 b/config/kernel.m4 index 6cdad2d1a..d8964a7e1 100644 --- a/config/kernel.m4 +++ b/config/kernel.m4 @@ -56,6 +56,7 @@ AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [ ZFS_AC_KERNE_GET_ACL_HANDLE_CACHE ZFS_AC_KERNEL_SHOW_OPTIONS ZFS_AC_KERNEL_FILE_INODE + ZFS_AC_KERNEL_FILE_DENTRY ZFS_AC_KERNEL_FSYNC ZFS_AC_KERNEL_EVICT_INODE ZFS_AC_KERNEL_DIRTY_INODE_WITH_FLAGS |