From: Mr NeilBrown Date: Fri, 16 Oct 2020 00:07:21 +0000 (+1100) Subject: LU-6142 llite: use d_is_symlink to test if dentry is a symlink X-Git-Tag: 2.14.51~12 X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=commitdiff_plain;h=36b1e4c4142f8a7251aa3b6b1ec9ecce4799114f;hp=b384ea39e593cda1ac4d6fb8b955d0c7d1a1f67b 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 --- 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;