aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiao Xie <miaox@cn.fujitsu.com>2011-01-25 02:46:17 -0500
committerLi Zefan <lizf@cn.fujitsu.com>2011-01-26 12:05:16 -0500
commitd0f69686c2ae775529aadc7a8acc6f13ad41de66 (patch)
treea7db405db82bd5acc3f51cb010dc306f402931ac
parent3f3d0bc0df041236fad4ffa82188a6e4ef9af75e (diff)
Btrfs: Don't return acl info when mounting with noacl option
Steps to reproduce: # mkfs.btrfs /dev/sda2 # mount /dev/sda2 /mnt # touch /mnt/file0 # setfacl -m 'u:root:x,g::x,o::x' /mnt/file0 # umount /mnt # mount /dev/sda2 -o noacl /mnt # getfacl /mnt/file0 ... user::rw- user:root:--x group::--x mask::--x other::--x The output should be: user::rw- group::--x other::--x Signed-off-by: Miao Xie <miaox@cn.fujitsu.com> Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
-rw-r--r--fs/btrfs/acl.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/fs/btrfs/acl.c b/fs/btrfs/acl.c
index 2222d161c7b6..3c52fc8afe29 100644
--- a/fs/btrfs/acl.c
+++ b/fs/btrfs/acl.c
@@ -37,6 +37,9 @@ static struct posix_acl *btrfs_get_acl(struct inode *inode, int type)
37 char *value = NULL; 37 char *value = NULL;
38 struct posix_acl *acl; 38 struct posix_acl *acl;
39 39
40 if (!IS_POSIXACL(inode))
41 return NULL;
42
40 acl = get_cached_acl(inode, type); 43 acl = get_cached_acl(inode, type);
41 if (acl != ACL_NOT_CACHED) 44 if (acl != ACL_NOT_CACHED)
42 return acl; 45 return acl;
@@ -82,6 +85,9 @@ static int btrfs_xattr_acl_get(struct dentry *dentry, const char *name,
82 struct posix_acl *acl; 85 struct posix_acl *acl;
83 int ret = 0; 86 int ret = 0;
84 87
88 if (!IS_POSIXACL(dentry->d_inode))
89 return -EOPNOTSUPP;
90
85 acl = btrfs_get_acl(dentry->d_inode, type); 91 acl = btrfs_get_acl(dentry->d_inode, type);
86 92
87 if (IS_ERR(acl)) 93 if (IS_ERR(acl))