diff options
Diffstat (limited to 'fs/btrfs/acl.c')
-rw-r--r-- | fs/btrfs/acl.c | 27 |
1 files changed, 2 insertions, 25 deletions
diff --git a/fs/btrfs/acl.c b/fs/btrfs/acl.c index 65a735d8f6e4..eb159aaa5a11 100644 --- a/fs/btrfs/acl.c +++ b/fs/btrfs/acl.c | |||
@@ -28,8 +28,6 @@ | |||
28 | #include "btrfs_inode.h" | 28 | #include "btrfs_inode.h" |
29 | #include "xattr.h" | 29 | #include "xattr.h" |
30 | 30 | ||
31 | #ifdef CONFIG_BTRFS_FS_POSIX_ACL | ||
32 | |||
33 | struct posix_acl *btrfs_get_acl(struct inode *inode, int type) | 31 | struct posix_acl *btrfs_get_acl(struct inode *inode, int type) |
34 | { | 32 | { |
35 | int size; | 33 | int size; |
@@ -111,7 +109,6 @@ static int btrfs_set_acl(struct btrfs_trans_handle *trans, | |||
111 | int ret, size = 0; | 109 | int ret, size = 0; |
112 | const char *name; | 110 | const char *name; |
113 | char *value = NULL; | 111 | char *value = NULL; |
114 | mode_t mode; | ||
115 | 112 | ||
116 | if (acl) { | 113 | if (acl) { |
117 | ret = posix_acl_valid(acl); | 114 | ret = posix_acl_valid(acl); |
@@ -122,13 +119,11 @@ static int btrfs_set_acl(struct btrfs_trans_handle *trans, | |||
122 | 119 | ||
123 | switch (type) { | 120 | switch (type) { |
124 | case ACL_TYPE_ACCESS: | 121 | case ACL_TYPE_ACCESS: |
125 | mode = inode->i_mode; | ||
126 | name = POSIX_ACL_XATTR_ACCESS; | 122 | name = POSIX_ACL_XATTR_ACCESS; |
127 | if (acl) { | 123 | if (acl) { |
128 | ret = posix_acl_equiv_mode(acl, &mode); | 124 | ret = posix_acl_equiv_mode(acl, &inode->i_mode); |
129 | if (ret < 0) | 125 | if (ret < 0) |
130 | return ret; | 126 | return ret; |
131 | inode->i_mode = mode; | ||
132 | } | 127 | } |
133 | ret = 0; | 128 | ret = 0; |
134 | break; | 129 | break; |
@@ -222,19 +217,16 @@ int btrfs_init_acl(struct btrfs_trans_handle *trans, | |||
222 | } | 217 | } |
223 | 218 | ||
224 | if (IS_POSIXACL(dir) && acl) { | 219 | if (IS_POSIXACL(dir) && acl) { |
225 | mode_t mode = inode->i_mode; | ||
226 | |||
227 | if (S_ISDIR(inode->i_mode)) { | 220 | if (S_ISDIR(inode->i_mode)) { |
228 | ret = btrfs_set_acl(trans, inode, acl, | 221 | ret = btrfs_set_acl(trans, inode, acl, |
229 | ACL_TYPE_DEFAULT); | 222 | ACL_TYPE_DEFAULT); |
230 | if (ret) | 223 | if (ret) |
231 | goto failed; | 224 | goto failed; |
232 | } | 225 | } |
233 | ret = posix_acl_create(&acl, GFP_NOFS, &mode); | 226 | ret = posix_acl_create(&acl, GFP_NOFS, &inode->i_mode); |
234 | if (ret < 0) | 227 | if (ret < 0) |
235 | return ret; | 228 | return ret; |
236 | 229 | ||
237 | inode->i_mode = mode; | ||
238 | if (ret > 0) { | 230 | if (ret > 0) { |
239 | /* we need an acl */ | 231 | /* we need an acl */ |
240 | ret = btrfs_set_acl(trans, inode, acl, ACL_TYPE_ACCESS); | 232 | ret = btrfs_set_acl(trans, inode, acl, ACL_TYPE_ACCESS); |
@@ -282,18 +274,3 @@ const struct xattr_handler btrfs_xattr_acl_access_handler = { | |||
282 | .get = btrfs_xattr_acl_get, | 274 | .get = btrfs_xattr_acl_get, |
283 | .set = btrfs_xattr_acl_set, | 275 | .set = btrfs_xattr_acl_set, |
284 | }; | 276 | }; |
285 | |||
286 | #else /* CONFIG_BTRFS_FS_POSIX_ACL */ | ||
287 | |||
288 | int btrfs_acl_chmod(struct inode *inode) | ||
289 | { | ||
290 | return 0; | ||
291 | } | ||
292 | |||
293 | int btrfs_init_acl(struct btrfs_trans_handle *trans, | ||
294 | struct inode *inode, struct inode *dir) | ||
295 | { | ||
296 | return 0; | ||
297 | } | ||
298 | |||
299 | #endif /* CONFIG_BTRFS_FS_POSIX_ACL */ | ||