From: pravins Date: Tue, 2 Jun 2009 06:25:21 +0000 (+0000) Subject: b=19151 X-Git-Tag: v1_9_0_200~33 X-Git-Url: https://git.whamcloud.com/gitweb?a=commitdiff_plain;h=6f96212ff990f42eae517a1d5c8f4af7a40a8b80;p=fs%2Flustre-release.git b=19151 i=Oleg use IT_LOOKUP to get inode attributes. --- diff --git a/lustre/llite/dcache.c b/lustre/llite/dcache.c index 02aeac5..cf1f734 100644 --- a/lustre/llite/dcache.c +++ b/lustre/llite/dcache.c @@ -394,7 +394,11 @@ int ll_revalidate_it(struct dentry *de, int lookup_flags, } /* Never execute intents for mount points. - * need to get attributes in case it got changed from other client */ + * Attributes will be fixed up in ll_inode_revalidate_it */ + if (d_mountpoint(de)) + GOTO(out_sa, rc = 1); + + /* need to get attributes in case root got changed from other client */ if (de == de->d_sb->s_root) { rc = __ll_inode_revalidate_it(de, it, MDS_INODELOCK_LOOKUP); if (rc == 0) @@ -402,9 +406,6 @@ int ll_revalidate_it(struct dentry *de, int lookup_flags, GOTO(out_sa, rc); } - if (d_mountpoint(de)) - GOTO(out_sa, rc = 1); - exp = ll_i2mdexp(de->d_inode); OBD_FAIL_TIMEOUT(OBD_FAIL_MDC_REVALIDATE_PAUSE, 5); diff --git a/lustre/llite/file.c b/lustre/llite/file.c index b608ff9..68785b9 100644 --- a/lustre/llite/file.c +++ b/lustre/llite/file.c @@ -2436,7 +2436,7 @@ int ll_inode_permission(struct inode *inode, int mask, struct nameidata *nd) * need to do it before permission check. */ if (inode == inode->i_sb->s_root->d_inode) { - struct lookup_intent it = { .it_op = IT_GETATTR }; + struct lookup_intent it = { .it_op = IT_LOOKUP }; rc = __ll_inode_revalidate_it(inode->i_sb->s_root, &it, MDS_INODELOCK_LOOKUP);