diff options
author | Christoph Hellwig <hch@lst.de> | 2011-07-23 11:37:03 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2011-07-25 14:25:38 -0400 |
commit | 4482a087d4c5a6ffbc385c56b4a4e2f694d9fd5d (patch) | |
tree | 10ca7beda590618be3c695720e04582c63a03822 /fs | |
parent | 6311b10800a4bdc3f2c85d01fb113cf49bb83770 (diff) |
reiserfs: cache negative ACLs for v1 stat format
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>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/reiserfs/inode.c | 5 | ||||
-rw-r--r-- | fs/reiserfs/xattr.c | 9 |
2 files changed, 5 insertions, 9 deletions
diff --git a/fs/reiserfs/inode.c b/fs/reiserfs/inode.c index 2922b90ceac1..9b0d4b78b4fb 100644 --- a/fs/reiserfs/inode.c +++ b/fs/reiserfs/inode.c | |||
@@ -1475,6 +1475,11 @@ void reiserfs_read_locked_inode(struct inode *inode, | |||
1475 | 1475 | ||
1476 | reiserfs_check_path(&path_to_sd); /* init inode should be relsing */ | 1476 | reiserfs_check_path(&path_to_sd); /* init inode should be relsing */ |
1477 | 1477 | ||
1478 | /* | ||
1479 | * Stat data v1 doesn't support ACLs. | ||
1480 | */ | ||
1481 | if (get_inode_sd_version(inode) == STAT_DATA_V1) | ||
1482 | cache_no_acl(inode); | ||
1478 | } | 1483 | } |
1479 | 1484 | ||
1480 | /** | 1485 | /** |
diff --git a/fs/reiserfs/xattr.c b/fs/reiserfs/xattr.c index 6938d8c68d6e..7ba083eb62bd 100644 --- a/fs/reiserfs/xattr.c +++ b/fs/reiserfs/xattr.c | |||
@@ -872,15 +872,6 @@ int reiserfs_check_acl(struct inode *inode, int mask) | |||
872 | struct posix_acl *acl; | 872 | struct posix_acl *acl; |
873 | int error = -EAGAIN; /* do regular unix permission checks by default */ | 873 | int error = -EAGAIN; /* do regular unix permission checks by default */ |
874 | 874 | ||
875 | /* | ||
876 | * Stat data v1 doesn't support ACLs. | ||
877 | */ | ||
878 | if (get_inode_sd_version(inode) == STAT_DATA_V1) | ||
879 | return -EAGAIN; | ||
880 | |||
881 | if (mask & MAY_NOT_BLOCK) | ||
882 | return -ECHILD; | ||
883 | |||
884 | acl = reiserfs_get_acl(inode, ACL_TYPE_ACCESS); | 875 | acl = reiserfs_get_acl(inode, ACL_TYPE_ACCESS); |
885 | 876 | ||
886 | if (acl) { | 877 | if (acl) { |