]> git.baikalelectronics.ru Git - kernel.git/commit
xattr: Stop calling {get,set,remove}xattr inode operations
authorAndreas Gruenbacher <agruenba@redhat.com>
Thu, 29 Sep 2016 15:48:44 +0000 (17:48 +0200)
committerAl Viro <viro@zeniv.linux.org.uk>
Sat, 8 Oct 2016 00:10:44 +0000 (20:10 -0400)
commitb06ad65999487afb604777a5b559bf311a221a39
treeee583d1c81a7f2e3380cc71108f033ff961649eb
parent9c668bea3e1e30b8b3840d57431330c0e5f68d74
xattr: Stop calling {get,set,remove}xattr inode operations

All filesystems that support xattrs by now do so via xattr handlers.
They all define sb->s_xattr, and their getxattr, setxattr, and
removexattr inode operations use the generic inode operations.  On
filesystems that don't support xattrs, the xattr inode operations are
all NULL, and sb->s_xattr is also NULL.

This means that we can remove the getxattr, setxattr, and removexattr
inode operations and directly call the generic handlers, or better,
inline expand those handlers into fs/xattr.c.

Filesystems that do not support xattrs on some inodes should clear the
IOP_XATTR i_opflags flag in those inodes.  (Right now, some filesystems
have checks to disable xattrs on some inodes in the ->list, ->get, and
->set xattr handler operations instead.)  The IOP_XATTR flag is
automatically cleared in inodes of filesystems that don't have xattr
support.

In orangefs, symlinks do have a setxattr iop but no getxattr iop.  Add a
check for symlinks to orangefs_inode_getxattr to preserve the current,
weird behavior; that check may not be necessary though.

Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Documentation/filesystems/Locking
Documentation/filesystems/vfs.txt
fs/orangefs/xattr.c
fs/xattr.c