libfs: Use IOP_XATTR flag for empty directory handling
authorAndreas Gruenbacher <agruenba@redhat.com>
Thu, 29 Sep 2016 15:48:41 +0000 (17:48 +0200)
committerAl Viro <viro@zeniv.linux.org.uk>
Sat, 8 Oct 2016 00:10:43 +0000 (20:10 -0400)
Instead of special xattr inode operations, use the IOP_XATTR inode
operations flag for the special libfs empty directories.

Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/libfs.c

index cfa9576ea8868884f062ec70c0455334729d0238..b322d756b20d48031695039fc484ab96d5fbd075 100644 (file)
@@ -1150,24 +1150,6 @@ static int empty_dir_setattr(struct dentry *dentry, struct iattr *attr)
        return -EPERM;
 }
 
-static int empty_dir_setxattr(struct dentry *dentry, struct inode *inode,
-                             const char *name, const void *value,
-                             size_t size, int flags)
-{
-       return -EOPNOTSUPP;
-}
-
-static ssize_t empty_dir_getxattr(struct dentry *dentry, struct inode *inode,
-                                 const char *name, void *value, size_t size)
-{
-       return -EOPNOTSUPP;
-}
-
-static int empty_dir_removexattr(struct dentry *dentry, const char *name)
-{
-       return -EOPNOTSUPP;
-}
-
 static ssize_t empty_dir_listxattr(struct dentry *dentry, char *list, size_t size)
 {
        return -EOPNOTSUPP;
@@ -1178,9 +1160,6 @@ static const struct inode_operations empty_dir_inode_operations = {
        .permission     = generic_permission,
        .setattr        = empty_dir_setattr,
        .getattr        = empty_dir_getattr,
-       .setxattr       = empty_dir_setxattr,
-       .getxattr       = empty_dir_getxattr,
-       .removexattr    = empty_dir_removexattr,
        .listxattr      = empty_dir_listxattr,
 };
 
@@ -1216,6 +1195,7 @@ void make_empty_dir_inode(struct inode *inode)
        inode->i_blocks = 0;
 
        inode->i_op = &empty_dir_inode_operations;
+       inode->i_opflags &= ~IOP_XATTR;
        inode->i_fop = &empty_dir_operations;
 }