mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-12-26 03:09:34 +03:00
Linux 3.6 compat, iops->lookup()
As of Linux commit 00cd8dd3bf95f2cc8435b4cac01d9995635c6d0b the struct nameidata is no longer passed to iops->lookup. Instead only the inamedata->flags are passed. ZFS like almost all Linux fileystems never made use of this so only the prototype needs to be wrapped for compatibility. Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com> Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> Issue #873
This commit is contained in:
parent
3c20361075
commit
8f195a908f
21
config/kernel-lookup-nameidata.m4
Normal file
21
config/kernel-lookup-nameidata.m4
Normal file
@ -0,0 +1,21 @@
|
||||
dnl #
|
||||
dnl # 3.6 API change
|
||||
dnl #
|
||||
AC_DEFUN([ZFS_AC_KERNEL_LOOKUP_NAMEIDATA], [
|
||||
AC_MSG_CHECKING([whether iops->lookup() takes struct nameidata])
|
||||
ZFS_LINUX_TRY_COMPILE([
|
||||
#include <linux/fs.h>
|
||||
],[
|
||||
struct dentry * (*inode_lookup) (struct inode *,struct dentry *,
|
||||
struct nameidata *) = NULL;
|
||||
struct inode_operations iops __attribute__ ((unused)) = {
|
||||
.lookup = inode_lookup,
|
||||
};
|
||||
],[
|
||||
AC_MSG_RESULT(yes)
|
||||
AC_DEFINE(HAVE_LOOKUP_NAMEIDATA, 1,
|
||||
[iops->lookup() operation takes nameidata])
|
||||
],[
|
||||
AC_MSG_RESULT(no)
|
||||
])
|
||||
])
|
@ -49,6 +49,7 @@ AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [
|
||||
ZFS_AC_KERNEL_NR_CACHED_OBJECTS
|
||||
ZFS_AC_KERNEL_FREE_CACHED_OBJECTS
|
||||
ZFS_AC_KERNEL_FALLOCATE
|
||||
ZFS_AC_KERNEL_LOOKUP_NAMEIDATA
|
||||
ZFS_AC_KERNEL_TRUNCATE_RANGE
|
||||
ZFS_AC_KERNEL_CREATE_UMODE_T
|
||||
ZFS_AC_KERNEL_AUTOMOUNT
|
||||
|
@ -143,7 +143,11 @@ zpl_root_getattr(struct vfsmount *mnt, struct dentry *dentry,
|
||||
}
|
||||
|
||||
static struct dentry *
|
||||
#ifdef HAVE_LOOKUP_NAMEIDATA
|
||||
zpl_root_lookup(struct inode *dip, struct dentry *dentry, struct nameidata *nd)
|
||||
#else
|
||||
zpl_root_lookup(struct inode *dip, struct dentry *dentry, unsigned int flags)
|
||||
#endif
|
||||
{
|
||||
cred_t *cr = CRED();
|
||||
struct inode *ip;
|
||||
@ -180,8 +184,14 @@ const struct inode_operations zpl_ops_root = {
|
||||
};
|
||||
|
||||
static struct dentry *
|
||||
#ifdef HAVE_LOOKUP_NAMEIDATA
|
||||
zpl_snapdir_lookup(struct inode *dip, struct dentry *dentry,
|
||||
struct nameidata *nd)
|
||||
#else
|
||||
zpl_snapdir_lookup(struct inode *dip, struct dentry *dentry,
|
||||
unsigned int flags)
|
||||
#endif
|
||||
|
||||
{
|
||||
cred_t *cr = CRED();
|
||||
struct inode *ip;
|
||||
@ -410,8 +420,13 @@ const struct dentry_operations zpl_dops_snapdirs = {
|
||||
#endif /* HAVE_AUTOMOUNT */
|
||||
|
||||
static struct dentry *
|
||||
#ifdef HAVE_LOOKUP_NAMEIDATA
|
||||
zpl_shares_lookup(struct inode *dip, struct dentry *dentry,
|
||||
struct nameidata *nd)
|
||||
#else
|
||||
zpl_shares_lookup(struct inode *dip, struct dentry *dentry,
|
||||
unsigned int flags)
|
||||
#endif
|
||||
{
|
||||
cred_t *cr = CRED();
|
||||
struct inode *ip = NULL;
|
||||
|
@ -31,7 +31,11 @@
|
||||
|
||||
|
||||
static struct dentry *
|
||||
#ifdef HAVE_LOOKUP_NAMEIDATA
|
||||
zpl_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd)
|
||||
#else
|
||||
zpl_lookup(struct inode *dir, struct dentry *dentry, unsigned int flags)
|
||||
#endif
|
||||
{
|
||||
cred_t *cr = CRED();
|
||||
struct inode *ip;
|
||||
|
Loading…
Reference in New Issue
Block a user