#include <linux/security.h>
#include <linux/xxhash.h>
#include "xattr.h"
struct erofs_xattr_iter { … };
static int erofs_init_inode_xattrs(struct inode *inode)
{ … }
static bool erofs_xattr_user_list(struct dentry *dentry)
{ … }
static bool erofs_xattr_trusted_list(struct dentry *dentry)
{ … }
static int erofs_xattr_generic_get(const struct xattr_handler *handler,
struct dentry *unused, struct inode *inode,
const char *name, void *buffer, size_t size)
{ … }
const struct xattr_handler erofs_xattr_user_handler = …;
const struct xattr_handler erofs_xattr_trusted_handler = …;
#ifdef CONFIG_EROFS_FS_SECURITY
const struct xattr_handler __maybe_unused erofs_xattr_security_handler = …;
#endif
const struct xattr_handler * const erofs_xattr_handlers[] = …;
static int erofs_xattr_copy_to_buffer(struct erofs_xattr_iter *it,
unsigned int len)
{ … }
static int erofs_listxattr_foreach(struct erofs_xattr_iter *it)
{ … }
static int erofs_getxattr_foreach(struct erofs_xattr_iter *it)
{ … }
static int erofs_xattr_iter_inline(struct erofs_xattr_iter *it,
struct inode *inode, bool getxattr)
{ … }
static int erofs_xattr_iter_shared(struct erofs_xattr_iter *it,
struct inode *inode, bool getxattr)
{ … }
int erofs_getxattr(struct inode *inode, int index, const char *name,
void *buffer, size_t buffer_size)
{ … }
ssize_t erofs_listxattr(struct dentry *dentry, char *buffer, size_t buffer_size)
{ … }
void erofs_xattr_prefixes_cleanup(struct super_block *sb)
{ … }
int erofs_xattr_prefixes_init(struct super_block *sb)
{ … }
#ifdef CONFIG_EROFS_FS_POSIX_ACL
struct posix_acl *erofs_get_acl(struct inode *inode, int type, bool rcu)
{ … }
#endif