On Wed, 2010-12-01 at 16:12 +0530, Aneesh Kumar K.V wrote: > An update of mode bits can result in ACL value being changed. We need > to mark the acl cache invalid when we update mode. Similarly we need > to update file attribute when we change ACL value > > Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@xxxxxxxxxxxxxxxxxx> > --- > fs/nfs/nfs4proc.c | 9 +++++++++ > 1 files changed, 9 insertions(+), 0 deletions(-) > > diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c > index 821d4c7..89fb751 100644 > --- a/fs/nfs/nfs4proc.c > +++ b/fs/nfs/nfs4proc.c > @@ -3356,6 +3356,8 @@ ssize_t nfs4_proc_get_acl(struct inode *inode, void *buf, size_t buflen) > ret = nfs_revalidate_inode(server, inode); > if (ret < 0) > return ret; > + if (NFS_I(inode)->cache_validity & NFS_INO_INVALID_ACL) > + nfs_zap_acl_cache(inode); > ret = nfs4_read_cached_acl(inode, buf, buflen); > if (ret != -ENOENT) > return ret; > @@ -3384,6 +3386,13 @@ static int __nfs4_proc_set_acl(struct inode *inode, const void *buf, size_t bufl > nfs_inode_return_delegation(inode); > buf_to_pages(buf, buflen, arg.acl_pages, &arg.acl_pgbase); > ret = nfs4_call_sync(server, &msg, &arg, &res, 1); > + /* > + * Acl update can result in inode attribute update. > + * so mark the attribute cache invalid. > + */ > + spin_lock(&inode->i_lock); > + NFS_I(inode)->cache_validity |= NFS_INO_INVALID_ATTR; > + spin_unlock(&inode->i_lock); > nfs_access_zap_cache(inode); > nfs_zap_acl_cache(inode); > return ret; Thanks! Applied... -- Trond Myklebust Linux NFS client maintainer NetApp Trond.Myklebust@xxxxxxxxxx www.netapp.com -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html