diff options
author | Josef Bacik <jbacik@redhat.com> | 2007-11-19 10:18:17 -0500 |
---|---|---|
committer | Chris Mason <chris.mason@oracle.com> | 2008-09-25 11:03:57 -0400 |
commit | 1caf9342fc71d020e788a59598a44d4ea0136b36 (patch) | |
tree | e54d756bd124515b262f56b22cd9c169b8b00027 | |
parent | 5cf664263b05beb080bf95037e4c3bd50c80b096 (diff) |
Btrfs: Make ACLs return EOPNOTSUPP for now
There was a slight problem with ACL's returning EINVAL when you tried to set an
ACL. This isn't correct, we should be returning EOPNOTSUPP, so I did a very
ugly thing and just commented everybody out and made them return EOPNOTSUPP.
This is only temporary, I'm going back to implement ACL's, but Chris wants to
push out a release so this will suffice for now.
Also Yan suggested setting reada to -1 in the delete case to enable backwards
readahead, and in the listxattr case I moved path->reada = 2; to after the if
(!path) check so we can avoid a possible null dereference. Thank you,
Signed-off-by: Chris Mason <chris.mason@oracle.com>
-rw-r--r-- | fs/btrfs/acl.c | 18 | ||||
-rw-r--r-- | fs/btrfs/xattr.c | 4 |
2 files changed, 20 insertions, 2 deletions
diff --git a/fs/btrfs/acl.c b/fs/btrfs/acl.c index aee9f0657c35..889ba89d3f9f 100644 --- a/fs/btrfs/acl.c +++ b/fs/btrfs/acl.c | |||
@@ -23,32 +23,50 @@ | |||
23 | #include "ctree.h" | 23 | #include "ctree.h" |
24 | #include "xattr.h" | 24 | #include "xattr.h" |
25 | 25 | ||
26 | /* | ||
27 | * FIXME: At this point this is all place holder stuff, we just return | ||
28 | * -EOPNOTSUPP so cp won't complain when it tries to copy over a file with an | ||
29 | * acl on it. | ||
30 | */ | ||
31 | |||
26 | static int btrfs_xattr_acl_access_get(struct inode *inode, const char *name, | 32 | static int btrfs_xattr_acl_access_get(struct inode *inode, const char *name, |
27 | void *value, size_t size) | 33 | void *value, size_t size) |
28 | { | 34 | { |
35 | /* | ||
29 | return btrfs_xattr_get(inode, BTRFS_XATTR_INDEX_POSIX_ACL_ACCESS, name, | 36 | return btrfs_xattr_get(inode, BTRFS_XATTR_INDEX_POSIX_ACL_ACCESS, name, |
30 | value, size); | 37 | value, size); |
38 | */ | ||
39 | return -EOPNOTSUPP; | ||
31 | } | 40 | } |
32 | 41 | ||
33 | static int btrfs_xattr_acl_access_set(struct inode *inode, const char *name, | 42 | static int btrfs_xattr_acl_access_set(struct inode *inode, const char *name, |
34 | const void *value, size_t size, int flags) | 43 | const void *value, size_t size, int flags) |
35 | { | 44 | { |
45 | /* | ||
36 | return btrfs_xattr_set(inode, BTRFS_XATTR_INDEX_POSIX_ACL_ACCESS, name, | 46 | return btrfs_xattr_set(inode, BTRFS_XATTR_INDEX_POSIX_ACL_ACCESS, name, |
37 | value, size, flags); | 47 | value, size, flags); |
48 | */ | ||
49 | return -EOPNOTSUPP; | ||
38 | } | 50 | } |
39 | 51 | ||
40 | static int btrfs_xattr_acl_default_get(struct inode *inode, const char *name, | 52 | static int btrfs_xattr_acl_default_get(struct inode *inode, const char *name, |
41 | void *value, size_t size) | 53 | void *value, size_t size) |
42 | { | 54 | { |
55 | /* | ||
43 | return btrfs_xattr_get(inode, BTRFS_XATTR_INDEX_POSIX_ACL_DEFAULT, | 56 | return btrfs_xattr_get(inode, BTRFS_XATTR_INDEX_POSIX_ACL_DEFAULT, |
44 | name, value, size); | 57 | name, value, size); |
58 | */ | ||
59 | return -EOPNOTSUPP; | ||
45 | } | 60 | } |
46 | 61 | ||
47 | static int btrfs_xattr_acl_default_set(struct inode *inode, const char *name, | 62 | static int btrfs_xattr_acl_default_set(struct inode *inode, const char *name, |
48 | const void *value, size_t size, int flags) | 63 | const void *value, size_t size, int flags) |
49 | { | 64 | { |
65 | /* | ||
50 | return btrfs_xattr_set(inode, BTRFS_XATTR_INDEX_POSIX_ACL_DEFAULT, | 66 | return btrfs_xattr_set(inode, BTRFS_XATTR_INDEX_POSIX_ACL_DEFAULT, |
51 | name, value, size, flags); | 67 | name, value, size, flags); |
68 | */ | ||
69 | return -EOPNOTSUPP; | ||
52 | } | 70 | } |
53 | 71 | ||
54 | struct xattr_handler btrfs_xattr_acl_default_handler = { | 72 | struct xattr_handler btrfs_xattr_acl_default_handler = { |
diff --git a/fs/btrfs/xattr.c b/fs/btrfs/xattr.c index f4ac5e0bbad1..984616cca254 100644 --- a/fs/btrfs/xattr.c +++ b/fs/btrfs/xattr.c | |||
@@ -302,9 +302,9 @@ ssize_t btrfs_listxattr(struct dentry *dentry, char *buffer, size_t size) | |||
302 | key.offset = 0; | 302 | key.offset = 0; |
303 | 303 | ||
304 | path = btrfs_alloc_path(); | 304 | path = btrfs_alloc_path(); |
305 | path->reada = 2; | ||
306 | if (!path) | 305 | if (!path) |
307 | return -ENOMEM; | 306 | return -ENOMEM; |
307 | path->reada = 2; | ||
308 | 308 | ||
309 | mutex_lock(&root->fs_info->fs_mutex); | 309 | mutex_lock(&root->fs_info->fs_mutex); |
310 | 310 | ||
@@ -410,7 +410,7 @@ int btrfs_delete_xattrs(struct btrfs_trans_handle *trans, | |||
410 | path = btrfs_alloc_path(); | 410 | path = btrfs_alloc_path(); |
411 | if (!path) | 411 | if (!path) |
412 | return -ENOMEM; | 412 | return -ENOMEM; |
413 | 413 | path->reada = -1; | |
414 | key.objectid = inode->i_ino; | 414 | key.objectid = inode->i_ino; |
415 | btrfs_set_key_type(&key, BTRFS_XATTR_ITEM_KEY); | 415 | btrfs_set_key_type(&key, BTRFS_XATTR_ITEM_KEY); |
416 | key.offset = (u64)-1; | 416 | key.offset = (u64)-1; |