[Btrfs-devel] [PATCH] disable acl's and a few minor changes
Josef Bacik
jbacik at redhat.com
Mon Nov 19 06:50:26 PST 2007
Hello,
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,
Josef
diff -r b6e379e3cccb acl.c
--- a/acl.c Mon Nov 19 16:28:27 2007 -0500
+++ b/acl.c Mon Nov 19 16:37:13 2007 -0500
@@ -23,32 +23,50 @@
#include "ctree.h"
#include "xattr.h"
+/*
+ * FIXME: At this point this is all place holder stuff, we just return
+ * -EOPNOTSUPP so cp won't complain when it tries to copy over a file with an
+ * acl on it.
+ */
+
static int btrfs_xattr_acl_access_get(struct inode *inode, const char *name,
void *value, size_t size)
{
+ /*
return btrfs_xattr_get(inode, BTRFS_XATTR_INDEX_POSIX_ACL_ACCESS, name,
value, size);
+ */
+ return -EOPNOTSUPP;
}
static int btrfs_xattr_acl_access_set(struct inode *inode, const char *name,
const void *value, size_t size, int flags)
{
+ /*
return btrfs_xattr_set(inode, BTRFS_XATTR_INDEX_POSIX_ACL_ACCESS, name,
value, size, flags);
+ */
+ return -EOPNOTSUPP;
}
static int btrfs_xattr_acl_default_get(struct inode *inode, const char *name,
void *value, size_t size)
{
+ /*
return btrfs_xattr_get(inode, BTRFS_XATTR_INDEX_POSIX_ACL_DEFAULT,
name, value, size);
+ */
+ return -EOPNOTSUPP;
}
static int btrfs_xattr_acl_default_set(struct inode *inode, const char *name,
const void *value, size_t size, int flags)
{
+ /*
return btrfs_xattr_set(inode, BTRFS_XATTR_INDEX_POSIX_ACL_DEFAULT,
name, value, size, flags);
+ */
+ return -EOPNOTSUPP;
}
struct xattr_handler btrfs_xattr_acl_default_handler = {
diff -r b6e379e3cccb xattr.c
--- a/xattr.c Mon Nov 19 16:28:27 2007 -0500
+++ b/xattr.c Mon Nov 19 16:45:23 2007 -0500
@@ -302,9 +302,9 @@ ssize_t btrfs_listxattr(struct dentry *d
key.offset = 0;
path = btrfs_alloc_path();
+ if (!path)
+ return -ENOMEM;
path->reada = 2;
- if (!path)
- return -ENOMEM;
mutex_lock(&root->fs_info->fs_mutex);
@@ -410,7 +410,7 @@ int btrfs_delete_xattrs(struct btrfs_tra
path = btrfs_alloc_path();
if (!path)
return -ENOMEM;
-
+ path->reada = -1;
key.objectid = inode->i_ino;
btrfs_set_key_type(&key, BTRFS_XATTR_ITEM_KEY);
key.offset = (u64)-1;
More information about the Btrfs-devel
mailing list