reiserfs: cache negative ACLs for v1 stat format
authorChristoph Hellwig <hch@lst.de>
Sat, 23 Jul 2011 15:37:03 +0000 (17:37 +0200)
committerAl Viro <viro@zeniv.linux.org.uk>
Mon, 25 Jul 2011 18:25:38 +0000 (14:25 -0400)
Always set up a negative ACL cache entry if the inode can't have ACLs.
That behaves much better than doing this check inside ->check_acl.

Also remove the left over MAY_NOT_BLOCK check.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/reiserfs/inode.c
fs/reiserfs/xattr.c

index 2922b90ceac1a799daa881dfbc3ed991ed2664c2..9b0d4b78b4fbf83f8591b8910b794e4219466cda 100644 (file)
@@ -1475,6 +1475,11 @@ void reiserfs_read_locked_inode(struct inode *inode,
 
        reiserfs_check_path(&path_to_sd);       /* init inode should be relsing */
 
+       /*
+        * Stat data v1 doesn't support ACLs.
+        */
+       if (get_inode_sd_version(inode) == STAT_DATA_V1)
+               cache_no_acl(inode);
 }
 
 /**
index 6938d8c68d6e5114d427cb350ae7e8765da928dd..7ba083eb62bdb6dcc430a914156126d79c1571e8 100644 (file)
@@ -872,15 +872,6 @@ int reiserfs_check_acl(struct inode *inode, int mask)
        struct posix_acl *acl;
        int error = -EAGAIN; /* do regular unix permission checks by default */
 
-       /*
-        * Stat data v1 doesn't support ACLs.
-        */
-       if (get_inode_sd_version(inode) == STAT_DATA_V1)
-               return -EAGAIN;
-
-       if (mask & MAY_NOT_BLOCK)
-               return -ECHILD;
-
        acl = reiserfs_get_acl(inode, ACL_TYPE_ACCESS);
 
        if (acl) {