From 34e80834ed8541e6e4f4af2df0ec6fadc968e21e Mon Sep 17 00:00:00 2001 From: Nick Piggin Date: Fri, 7 Jan 2011 17:50:02 +1100 Subject: [PATCH] --- yaml --- r: 226734 b: refs/heads/master c: 880566e17c4fce0d998d92610d32fcb9506aa6dd h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/fs/xfs/linux-2.6/xfs_acl.c | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 1bf8dd858ebd..dd83a874011d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 258a5aa8dfc6294f5f7df892023ee4d3e57c9841 +refs/heads/master: 880566e17c4fce0d998d92610d32fcb9506aa6dd diff --git a/trunk/fs/xfs/linux-2.6/xfs_acl.c b/trunk/fs/xfs/linux-2.6/xfs_acl.c index 4b11eaf6a580..39f4f809bb68 100644 --- a/trunk/fs/xfs/linux-2.6/xfs_acl.c +++ b/trunk/fs/xfs/linux-2.6/xfs_acl.c @@ -225,9 +225,6 @@ xfs_check_acl(struct inode *inode, int mask, unsigned int flags) struct posix_acl *acl; int error = -EAGAIN; - if (flags & IPERM_FLAG_RCU) - return -ECHILD; - ip = XFS_I(inode); trace_xfs_check_acl(ip); @@ -238,6 +235,12 @@ xfs_check_acl(struct inode *inode, int mask, unsigned int flags) if (!XFS_IFORK_Q(ip)) return -EAGAIN; + if (flags & IPERM_FLAG_RCU) { + if (!negative_cached_acl(inode, ACL_TYPE_ACCESS)) + return -ECHILD; + return -EAGAIN; + } + acl = xfs_get_acl(inode, ACL_TYPE_ACCESS); if (IS_ERR(acl)) return PTR_ERR(acl);