#include "xfs.h"
#include "xfs_fs.h"
#include "xfs_shared.h"
#include "xfs_format.h"
#include "xfs_trans_resv.h"
#include "xfs_mount.h"
#include "xfs_log_format.h"
#include "xfs_trans.h"
#include "xfs_inode.h"
#include "xfs_da_format.h"
#include "xfs_da_btree.h"
#include "xfs_attr.h"
#include "xfs_attr_leaf.h"
#include "xfs_attr_sf.h"
#include "xfs_parent.h"
#include "scrub/scrub.h"
#include "scrub/common.h"
#include "scrub/dabtree.h"
#include "scrub/attr.h"
#include "scrub/listxattr.h"
#include "scrub/repair.h"
static void
xchk_xattr_buf_cleanup(
void *priv)
{ … }
static inline bool
xchk_xattr_want_freemap(
struct xfs_scrub *sc)
{ … }
int
xchk_setup_xattr_buf(
struct xfs_scrub *sc,
size_t value_size)
{ … }
int
xchk_setup_xattr(
struct xfs_scrub *sc)
{ … }
static int
xchk_xattr_actor(
struct xfs_scrub *sc,
struct xfs_inode *ip,
unsigned int attr_flags,
const unsigned char *name,
unsigned int namelen,
const void *value,
unsigned int valuelen,
void *priv)
{ … }
bool
xchk_xattr_set_map(
struct xfs_scrub *sc,
unsigned long *map,
unsigned int start,
unsigned int len)
{ … }
STATIC bool
xchk_xattr_check_freemap(
struct xfs_scrub *sc,
struct xfs_attr3_icleaf_hdr *leafhdr)
{ … }
STATIC void
xchk_xattr_entry(
struct xchk_da_btree *ds,
int level,
char *buf_end,
struct xfs_attr_leafblock *leaf,
struct xfs_attr3_icleaf_hdr *leafhdr,
struct xfs_attr_leaf_entry *ent,
int idx,
unsigned int *usedbytes,
__u32 *last_hashval)
{ … }
STATIC int
xchk_xattr_block(
struct xchk_da_btree *ds,
int level)
{ … }
STATIC int
xchk_xattr_rec(
struct xchk_da_btree *ds,
int level)
{ … }
STATIC int
xchk_xattr_check_sf(
struct xfs_scrub *sc)
{ … }
int
xchk_xattr(
struct xfs_scrub *sc)
{ … }