diff options
author | Steven Whitehouse <swhiteho@redhat.com> | 2009-09-29 12:27:23 +0100 |
---|---|---|
committer | Steven Whitehouse <swhiteho@redhat.com> | 2009-12-03 11:43:23 +0000 |
commit | 796bd9524731850967d437b7f47a86acc776ea89 (patch) | |
tree | ddaf9a4bd69e6178257b4a488b174301c4d3f045 | |
parent | 2646a1f61a3b5525914757f10fa12b5b94713648 (diff) | |
download | linux-stable-796bd9524731850967d437b7f47a86acc776ea89.tar.gz linux-stable-796bd9524731850967d437b7f47a86acc776ea89.tar.bz2 linux-stable-796bd9524731850967d437b7f47a86acc776ea89.zip |
VFS: Add forget_all_cached_acls()
This is required for cluster filesystems which want to use
cached ACLs so that they can invalidate the cache when
required.
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
Cc: Alexander Viro <aviro@redhat.com>
Cc: Christoph Hellwig <hch@infradead.org>
-rw-r--r-- | include/linux/posix_acl.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/include/linux/posix_acl.h b/include/linux/posix_acl.h index 065a3652a3ea..67608161df6b 100644 --- a/include/linux/posix_acl.h +++ b/include/linux/posix_acl.h @@ -147,6 +147,20 @@ static inline void forget_cached_acl(struct inode *inode, int type) if (old != ACL_NOT_CACHED) posix_acl_release(old); } + +static inline void forget_all_cached_acls(struct inode *inode) +{ + struct posix_acl *old_access, *old_default; + spin_lock(&inode->i_lock); + old_access = inode->i_acl; + old_default = inode->i_default_acl; + inode->i_acl = inode->i_default_acl = ACL_NOT_CACHED; + spin_unlock(&inode->i_lock); + if (old_access != ACL_NOT_CACHED) + posix_acl_release(old_access); + if (old_default != ACL_NOT_CACHED) + posix_acl_release(old_default); +} #endif static inline void cache_no_acl(struct inode *inode) |