Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

libfs: Use IOP_XATTR flag for empty directory handling

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>

authored by

Andreas Gruenbacher and committed by
Al Viro
f5c24438 5f6e59ae

+1 -21
+1 -21
fs/libfs.c
··· 1150 1150 return -EPERM; 1151 1151 } 1152 1152 1153 - static int empty_dir_setxattr(struct dentry *dentry, struct inode *inode, 1154 - const char *name, const void *value, 1155 - size_t size, int flags) 1156 - { 1157 - return -EOPNOTSUPP; 1158 - } 1159 - 1160 - static ssize_t empty_dir_getxattr(struct dentry *dentry, struct inode *inode, 1161 - const char *name, void *value, size_t size) 1162 - { 1163 - return -EOPNOTSUPP; 1164 - } 1165 - 1166 - static int empty_dir_removexattr(struct dentry *dentry, const char *name) 1167 - { 1168 - return -EOPNOTSUPP; 1169 - } 1170 - 1171 1153 static ssize_t empty_dir_listxattr(struct dentry *dentry, char *list, size_t size) 1172 1154 { 1173 1155 return -EOPNOTSUPP; ··· 1160 1178 .permission = generic_permission, 1161 1179 .setattr = empty_dir_setattr, 1162 1180 .getattr = empty_dir_getattr, 1163 - .setxattr = empty_dir_setxattr, 1164 - .getxattr = empty_dir_getxattr, 1165 - .removexattr = empty_dir_removexattr, 1166 1181 .listxattr = empty_dir_listxattr, 1167 1182 }; 1168 1183 ··· 1195 1216 inode->i_blocks = 0; 1196 1217 1197 1218 inode->i_op = &empty_dir_inode_operations; 1219 + inode->i_opflags &= ~IOP_XATTR; 1198 1220 inode->i_fop = &empty_dir_operations; 1199 1221 } 1200 1222