From 36b1e4c4142f8a7251aa3b6b1ec9ecce4799114f Mon Sep 17 00:00:00 2001 From: Mr NeilBrown Date: Fri, 16 Oct 2020 11:07:21 +1100 Subject: [PATCH] LU-6142 llite: use d_is_symlink to test if dentry is a symlink Using d_is_symlink() is preferred to testing ->get_link or ->follow_link. A recent patch made this work for foreign files/dirs by making sure the entry type in d_flags is correct, so we can simplify the code in ll_revalidate_dentry(). Fixes: 15d44e787e17 ("LU-12682 llite: fake symlink type of foreign file/dir") Signed-off-by: Mr NeilBrown Change-Id: Ie4c33ae1fb9a660ccbd50e2c70b6cde65cc9b990 Reviewed-on: https://review.whamcloud.com/41770 Reviewed-by: James Simmons Reviewed-by: Andreas Dilger Tested-by: jenkins Tested-by: Maloo Reviewed-by: Oleg Drokin --- lustre/llite/dcache.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/lustre/llite/dcache.c b/lustre/llite/dcache.c index caaacbd..0faaaea 100644 --- a/lustre/llite/dcache.c +++ b/lustre/llite/dcache.c @@ -295,11 +295,7 @@ static int ll_revalidate_dentry(struct dentry *dentry, * real symlinks. This will allow to open foreign symlink file/dir * for get[dir]stripe/unlock ioctl()s. */ -#ifdef HAVE_IOP_GET_LINK - if (dentry->d_inode && dentry->d_inode->i_op->get_link) { -#else - if (dentry->d_inode && dentry->d_inode->i_op->follow_link) { -#endif + if (d_is_symlink(dentry)) { if (!S_ISLNK(dentry->d_inode->i_mode) && !(lookup_flags & LOOKUP_FOLLOW)) return 0; -- 1.8.3.1