diff options
author | Andreas Gruenbacher <agruenba@redhat.com> | 2016-04-22 22:36:44 +0200 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2016-05-17 19:17:09 -0400 |
commit | e0d46f5c6e0ba3a79e64cd60e62b7b7191ed93f3 (patch) | |
tree | cd90dbd2f6a4454db626ce24d8600544d8ae493f /fs/btrfs/xattr.c | |
parent | 2b88fc21cae91e925bc5e361e6ea67467b471da5 (diff) | |
download | linux-e0d46f5c6e0ba3a79e64cd60e62b7b7191ed93f3.tar.gz linux-e0d46f5c6e0ba3a79e64cd60e62b7b7191ed93f3.tar.bz2 linux-e0d46f5c6e0ba3a79e64cd60e62b7b7191ed93f3.zip |
btrfs: Switch to generic xattr handlers
The btrfs_{set,remove}xattr inode operations check for a read-only root
(btrfs_root_readonly) before calling into generic_{set,remove}xattr. If
this check is moved into __btrfs_setxattr, we can get rid of
btrfs_{set,remove}xattr.
This patch applies to mainline, I would like to keep it together with
the other xattr cleanups if possible, though. Could you please review?
Thanks,
Andreas
Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/btrfs/xattr.c')
-rw-r--r-- | fs/btrfs/xattr.c | 22 |
1 files changed, 3 insertions, 19 deletions
diff --git a/fs/btrfs/xattr.c b/fs/btrfs/xattr.c index 03224b00ea70..3bfb252206c7 100644 --- a/fs/btrfs/xattr.c +++ b/fs/btrfs/xattr.c @@ -237,6 +237,9 @@ int __btrfs_setxattr(struct btrfs_trans_handle *trans, struct btrfs_root *root = BTRFS_I(inode)->root; int ret; + if (btrfs_root_readonly(root)) + return -EROFS; + if (trans) return do_setxattr(trans, inode, name, value, size, flags); @@ -432,25 +435,6 @@ const struct xattr_handler *btrfs_xattr_handlers[] = { NULL, }; -int btrfs_setxattr(struct dentry *dentry, const char *name, const void *value, - size_t size, int flags) -{ - struct btrfs_root *root = BTRFS_I(d_inode(dentry))->root; - - if (btrfs_root_readonly(root)) - return -EROFS; - return generic_setxattr(dentry, name, value, size, flags); -} - -int btrfs_removexattr(struct dentry *dentry, const char *name) -{ - struct btrfs_root *root = BTRFS_I(d_inode(dentry))->root; - - if (btrfs_root_readonly(root)) - return -EROFS; - return generic_removexattr(dentry, name); -} - static int btrfs_initxattrs(struct inode *inode, const struct xattr *xattr_array, void *fs_info) { |