From: Oleg Drokin Date: Tue, 2 Feb 2010 05:20:23 +0000 (-0500) Subject: b=20989 Don't search for inode in nfs get_dentry X-Git-Tag: 1.10.0.36~11 X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=commitdiff_plain;h=06889c56aec37cead923dbbd636d31dba0a46950 b=20989 Don't search for inode in nfs get_dentry Getting inode separately without some sort of locking enabled a situation where several threads tried to populate same inode with different lsm data at the same time leading to lsm pointer change (and leak). i=johann i=bzzz --- diff --git a/lustre/llite/llite_nfs.c b/lustre/llite/llite_nfs.c index a2ce959..fb6c9c1 100644 --- a/lustre/llite/llite_nfs.c +++ b/lustre/llite/llite_nfs.c @@ -60,12 +60,6 @@ __u32 get_uuid2int(const char *name, int len) return (key0 << 1); } -static int ll_nfs_test_inode(struct inode *inode, void *opaque) -{ - return lu_fid_eq(&ll_i2info(inode)->lli_fid, - (struct lu_fid *)opaque); -} - static struct inode *search_inode_for_lustre(struct super_block *sb, const struct lu_fid *fid) { @@ -80,10 +74,6 @@ static struct inode *search_inode_for_lustre(struct super_block *sb, CDEBUG(D_INFO, "searching inode for:(%lu,"DFID")\n", ino, PFID(fid)); - inode = ILOOKUP(sb, ino, ll_nfs_test_inode, fid); - if (inode) - RETURN(inode); - rc = ll_get_max_mdsize(sbi, &eadatalen); if (rc) RETURN(ERR_PTR(rc));