])
#
+# 3.8 struct file has new memeber f_inode
+#
+AC_DEFUN([LC_HAVE_FILE_F_INODE],
+[AC_MSG_CHECKING([if struct file has memeber f_inode])
+LB_LINUX_TRY_COMPILE([
+ #include <linux/fs.h>
+],[
+ ((struct file *)0)->f_inode = NULL;
+],[
+ AC_DEFINE(HAVE_FILE_F_INODE, 1,
+ [struct file has memeber f_inode])
+ AC_MSG_RESULT([yes])
+],[
+ AC_MSG_RESULT([no])
+])
+])
+
+#
# 3.9 uses hlist_for_each_entry with 3 args
# b67bfe0d42cac56c512dd5da4b1b347a23f4b70a
#
# 3.7
LC_HAVE_POSIXACL_USER_NS
+ # 3.8
+ LC_HAVE_FILE_F_INODE
+
# 3.9
LC_HAVE_HLIST_FOR_EACH_3ARG
LC_HAVE_F_PATH_MNT
# define ll_dirty_inode(inode, flag) (inode)->i_sb->s_op->dirty_inode((inode))
#endif
+#ifdef HAVE_FILE_F_INODE
+# define set_file_inode(file, inode) (file)->f_inode = inode
+#else
+# define set_file_inode(file, inode)
+#endif
+
#endif /* _COMPAT25_H */
file->f_dentry = dentry;
file->f_mapping = inode->i_mapping;
file->f_op = inode->i_fop;
+ set_file_inode(file, inode);
#ifndef HAVE_FILE_FSYNC_4ARGS
mutex_lock(&inode->i_mutex);
#endif
file->f_dentry = obj_dentry;
file->f_mapping = obj->oo_inode->i_mapping;
file->f_op = obj->oo_inode->i_fop;
+ set_file_inode(file, obj->oo_inode);
+
lu_object_get(lo);
RETURN((struct dt_it *) it);
}
file->f_dentry = dentry;
file->f_mapping = inode->i_mapping;
file->f_op = inode->i_fop;
+ set_file_inode(file, inode);
saved_fs = get_fs();
set_fs(get_ds());
filp->f_mapping = inode->i_mapping;
filp->f_op = fops;
filp->private_data = NULL;
+ set_file_inode(filp, inode);
rc = fops->readdir(filp, &buf, filldir);
fops->release(inode, filp);