diff options
author | Jörg Thalheim <[email protected]> | 2015-02-07 13:41:01 +0100 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2015-02-10 11:24:51 -0800 |
commit | 534759fad30ca55608bcd42a0af5a87c8c4feb36 (patch) | |
tree | ed56f8b9045442cd59ef799a0615936cac083da4 | |
parent | 77aef6f60ea29f6d3769addc778db6328ac85755 (diff) |
Linux 3.19 compat: file_inode was added
struct access f->f_dentry->d_inode was replaced by accessor function
file_inode(f)
Signed-off-by: Joerg Thalheim <[email protected]>
Signed-off-by: Brian Behlendorf <[email protected]>
Closes #3084
-rw-r--r-- | config/kernel-file-inode.m4 | 19 | ||||
-rw-r--r-- | config/kernel.m4 | 1 | ||||
-rw-r--r-- | include/linux/vfs_compat.h | 13 | ||||
-rw-r--r-- | module/zfs/zpl_file.c | 4 |
4 files changed, 35 insertions, 2 deletions
diff --git a/config/kernel-file-inode.m4 b/config/kernel-file-inode.m4 new file mode 100644 index 000000000..300188fa3 --- /dev/null +++ b/config/kernel-file-inode.m4 @@ -0,0 +1,19 @@ +dnl # +dnl # 3.19 API change +dnl # struct access f->f_dentry->d_inode was replaced by accessor function +dnl # file_inode(f) +dnl # +AC_DEFUN([ZFS_AC_KERNEL_FILE_INODE], [ + AC_MSG_CHECKING([whether file_inode() is available]) + ZFS_LINUX_TRY_COMPILE([ + #include <linux/fs.h> + ],[ + struct file *f = NULL; + file_inode(f); + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_FILE_INODE, 1, [file_inode() is available]) + ],[ + AC_MSG_RESULT(no) + ]) +]) diff --git a/config/kernel.m4 b/config/kernel.m4 index bdfb19c83..e0b795422 100644 --- a/config/kernel.m4 +++ b/config/kernel.m4 @@ -61,6 +61,7 @@ AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [ ZFS_AC_KERNEL_INODE_OPERATIONS_GET_ACL ZFS_AC_KERNEL_CURRENT_UMASK ZFS_AC_KERNEL_SHOW_OPTIONS + ZFS_AC_KERNEL_FILE_INODE ZFS_AC_KERNEL_FSYNC ZFS_AC_KERNEL_EVICT_INODE ZFS_AC_KERNEL_DIRTY_INODE_WITH_FLAGS diff --git a/include/linux/vfs_compat.h b/include/linux/vfs_compat.h index 098cf05f3..6f5a9dc96 100644 --- a/include/linux/vfs_compat.h +++ b/include/linux/vfs_compat.h @@ -21,6 +21,7 @@ /* * Copyright (C) 2011 Lawrence Livermore National Security, LLC. + * Copyright (C) 2015 Jörg Thalheim. */ #ifndef _ZFS_VFS_H @@ -328,4 +329,16 @@ current_umask(void) #define zpl_inode_owner_or_capable(ip) is_owner_or_cap(ip) #endif /* HAVE_INODE_OWNER_OR_CAPABLE */ +/* + * 3.19 API change + * struct access f->f_dentry->d_inode was replaced by accessor function + * file_inode(f) + */ +#ifndef HAVE_FILE_INODE +static inline struct inode *file_inode(const struct file *f) +{ + return (f->f_dentry->d_inode); +} +#endif /* HAVE_FILE_INODE */ + #endif /* _ZFS_VFS_H */ diff --git a/module/zfs/zpl_file.c b/module/zfs/zpl_file.c index 1f4f219ed..5f5bbba3d 100644 --- a/module/zfs/zpl_file.c +++ b/module/zfs/zpl_file.c @@ -617,7 +617,7 @@ zpl_fallocate(struct file *filp, int mode, loff_t offset, loff_t len) static int zpl_ioctl_getflags(struct file *filp, void __user *arg) { - struct inode *ip = filp->f_dentry->d_inode; + struct inode *ip = file_inode(filp); unsigned int ioctl_flags = 0; uint64_t zfs_flags = ITOZ(ip)->z_pflags; int error; @@ -653,7 +653,7 @@ zpl_ioctl_getflags(struct file *filp, void __user *arg) static int zpl_ioctl_setflags(struct file *filp, void __user *arg) { - struct inode *ip = filp->f_dentry->d_inode; + struct inode *ip = file_inode(filp); uint64_t zfs_flags = ITOZ(ip)->z_pflags; unsigned int ioctl_flags; cred_t *cr = CRED(); |