diff --git a/lustre/autoconf/lustre-core.m4 b/lustre/autoconf/lustre-core.m4 index 46d2ca874846a175318308bb6f8c3670a31899c9..77d6a982d3498bef81e8e7a5ba77dfeafd3e4547 100644 --- a/lustre/autoconf/lustre-core.m4 +++ b/lustre/autoconf/lustre-core.m4 @@ -2466,6 +2466,25 @@ struct_posix_acl_xattr, [ ]) ]) # LC_STRUCT_POSIX_ACL_XATTR +# +# LC_IOP_GENERIC_READLINK +# +# Kernel version 4.10 commit dfeef68862edd7d4bafe68ef7aeb5f658ef24bb5 +# removed generic_readlink from individual file systems +# +AC_DEFUN([LC_IOP_GENERIC_READLINK], [ +LB_CHECK_COMPILE([if 'generic_readlink' still exist], +inode_ops_readlink, [ + #include <linux/fs.h> +],[ + struct inode_operations iop; + iop.readlink = generic_readlink; +],[ + AC_DEFINE(HAVE_IOP_GENERIC_READLINK, 1, + [generic_readlink has been removed]) +]) +]) # LC_IOP_GENERIC_READLINK + # # LC_PROG_LINUX # @@ -2670,6 +2689,9 @@ AC_DEFUN([LC_PROG_LINUX], [ # 4.9 LC_GROUP_INFO_GID + # 4.10 + LC_IOP_GENERIC_READLINK + # AS_IF([test "x$enable_server" != xno], [ LC_FUNC_DEV_SET_RDONLY diff --git a/lustre/llite/symlink.c b/lustre/llite/symlink.c index b0993a12718a97b61c7141c7f15d714e091adfe4..7095955d6da8fec83fb5f9a0111785289caaf2b8 100644 --- a/lustre/llite/symlink.c +++ b/lustre/llite/symlink.c @@ -221,7 +221,9 @@ static const char *ll_follow_link(struct dentry *dentry, void **cookie) #endif /* HAVE_SYMLINK_OPS_USE_NAMEIDATA */ struct inode_operations ll_fast_symlink_inode_operations = { +#ifdef HAVE_IOP_GENERIC_READLINK .readlink = generic_readlink, +#endif .setattr = ll_setattr, #ifdef HAVE_IOP_GET_LINK .get_link = ll_get_link,