#include <linux/slab.h>
#include <linux/spinlock.h>
#include <linux/completion.h>
#include <linux/buffer_head.h>
#include <linux/xattr.h>
#include <linux/gfs2_ondisk.h>
#include <linux/posix_acl_xattr.h>
#include <linux/uaccess.h>
#include "gfs2.h"
#include "incore.h"
#include "acl.h"
#include "xattr.h"
#include "glock.h"
#include "inode.h"
#include "meta_io.h"
#include "quota.h"
#include "rgrp.h"
#include "super.h"
#include "trans.h"
#include "util.h"
static int ea_calc_size(struct gfs2_sbd *sdp, unsigned int nsize, size_t dsize,
unsigned int *size)
{ … }
static int ea_check_size(struct gfs2_sbd *sdp, unsigned int nsize, size_t dsize)
{ … }
static bool gfs2_eatype_valid(struct gfs2_sbd *sdp, u8 type)
{ … }
ea_call_t;
static int ea_foreach_i(struct gfs2_inode *ip, struct buffer_head *bh,
ea_call_t ea_call, void *data)
{ … }
static int ea_foreach(struct gfs2_inode *ip, ea_call_t ea_call, void *data)
{ … }
struct ea_find { … };
static int ea_find_i(struct gfs2_inode *ip, struct buffer_head *bh,
struct gfs2_ea_header *ea, struct gfs2_ea_header *prev,
void *private)
{ … }
static int gfs2_ea_find(struct gfs2_inode *ip, int type, const char *name,
struct gfs2_ea_location *el)
{ … }
static int ea_dealloc_unstuffed(struct gfs2_inode *ip, struct buffer_head *bh,
struct gfs2_ea_header *ea,
struct gfs2_ea_header *prev, void *private)
{ … }
static int ea_remove_unstuffed(struct gfs2_inode *ip, struct buffer_head *bh,
struct gfs2_ea_header *ea,
struct gfs2_ea_header *prev, int leave)
{ … }
struct ea_list { … };
static int ea_list_i(struct gfs2_inode *ip, struct buffer_head *bh,
struct gfs2_ea_header *ea, struct gfs2_ea_header *prev,
void *private)
{ … }
ssize_t gfs2_listxattr(struct dentry *dentry, char *buffer, size_t size)
{ … }
static int gfs2_iter_unstuffed(struct gfs2_inode *ip, struct gfs2_ea_header *ea,
const char *din, char *dout)
{ … }
static int gfs2_ea_get_copy(struct gfs2_inode *ip, struct gfs2_ea_location *el,
char *data, size_t size)
{ … }
int gfs2_xattr_acl_get(struct gfs2_inode *ip, const char *name, char **ppdata)
{ … }
static int __gfs2_xattr_get(struct inode *inode, const char *name,
void *buffer, size_t size, int type)
{ … }
static int gfs2_xattr_get(const struct xattr_handler *handler,
struct dentry *unused, struct inode *inode,
const char *name, void *buffer, size_t size)
{ … }
static int ea_alloc_blk(struct gfs2_inode *ip, struct buffer_head **bhp)
{ … }
static int ea_write(struct gfs2_inode *ip, struct gfs2_ea_header *ea,
struct gfs2_ea_request *er)
{ … }
ea_skeleton_call_t;
static int ea_alloc_skeleton(struct gfs2_inode *ip, struct gfs2_ea_request *er,
unsigned int blks,
ea_skeleton_call_t skeleton_call, void *private)
{ … }
static int ea_init_i(struct gfs2_inode *ip, struct gfs2_ea_request *er,
void *private)
{ … }
static int ea_init(struct gfs2_inode *ip, int type, const char *name,
const void *data, size_t size)
{ … }
static struct gfs2_ea_header *ea_split_ea(struct gfs2_ea_header *ea)
{ … }
static void ea_set_remove_stuffed(struct gfs2_inode *ip,
struct gfs2_ea_location *el)
{ … }
struct ea_set { … };
static int ea_set_simple_noalloc(struct gfs2_inode *ip, struct buffer_head *bh,
struct gfs2_ea_header *ea, struct ea_set *es)
{ … }
static int ea_set_simple_alloc(struct gfs2_inode *ip,
struct gfs2_ea_request *er, void *private)
{ … }
static int ea_set_simple(struct gfs2_inode *ip, struct buffer_head *bh,
struct gfs2_ea_header *ea, struct gfs2_ea_header *prev,
void *private)
{ … }
static int ea_set_block(struct gfs2_inode *ip, struct gfs2_ea_request *er,
void *private)
{ … }
static int ea_set_i(struct gfs2_inode *ip, int type, const char *name,
const void *value, size_t size, struct gfs2_ea_location *el)
{ … }
static int ea_set_remove_unstuffed(struct gfs2_inode *ip,
struct gfs2_ea_location *el)
{ … }
static int ea_remove_stuffed(struct gfs2_inode *ip, struct gfs2_ea_location *el)
{ … }
static int gfs2_xattr_remove(struct gfs2_inode *ip, int type, const char *name)
{ … }
int __gfs2_xattr_set(struct inode *inode, const char *name,
const void *value, size_t size, int flags, int type)
{ … }
static int gfs2_xattr_set(const struct xattr_handler *handler,
struct mnt_idmap *idmap,
struct dentry *unused, struct inode *inode,
const char *name, const void *value,
size_t size, int flags)
{ … }
static int ea_dealloc_indirect(struct gfs2_inode *ip)
{ … }
static int ea_dealloc_block(struct gfs2_inode *ip)
{ … }
int gfs2_ea_dealloc(struct gfs2_inode *ip)
{ … }
static const struct xattr_handler gfs2_xattr_user_handler = …;
static const struct xattr_handler gfs2_xattr_security_handler = …;
static bool
gfs2_xattr_trusted_list(struct dentry *dentry)
{ … }
static const struct xattr_handler gfs2_xattr_trusted_handler = …;
const struct xattr_handler * const gfs2_xattr_handlers_max[] = …;
const struct xattr_handler * const *gfs2_xattr_handlers_min = …;