47 lines · c
1// SPDX-License-Identifier: GPL-2.0-or-later2/*3 * Copyright (C) 2017-2023 Oracle. All Rights Reserved.4 * Author: Darrick J. Wong <djwong@kernel.org>5 */6#ifndef __XFS_SCRUB_DABTREE_H__7#define __XFS_SCRUB_DABTREE_H__8 9/* dir/attr btree */10 11struct xchk_da_btree {12 struct xfs_da_args dargs;13 xfs_dahash_t hashes[XFS_DA_NODE_MAXDEPTH];14 int maxrecs[XFS_DA_NODE_MAXDEPTH];15 struct xfs_da_state *state;16 struct xfs_scrub *sc;17 void *private;18 19 /*20 * Lowest and highest directory block address in which we expect21 * to find dir/attr btree node blocks. For a directory this22 * (presumably) means between LEAF_OFFSET and FREE_OFFSET; for23 * attributes there is no limit.24 */25 xfs_dablk_t lowest;26 xfs_dablk_t highest;27 28 int tree_level;29};30 31typedef int (*xchk_da_btree_rec_fn)(struct xchk_da_btree *ds, int level);32 33/* Check for da btree operation errors. */34bool xchk_da_process_error(struct xchk_da_btree *ds, int level, int *error);35 36/* Check for da btree corruption. */37void xchk_da_set_corrupt(struct xchk_da_btree *ds, int level);38void xchk_da_set_preen(struct xchk_da_btree *ds, int level);39 40void xchk_da_set_preen(struct xchk_da_btree *ds, int level);41 42int xchk_da_btree_hash(struct xchk_da_btree *ds, int level, __be32 *hashp);43int xchk_da_btree(struct xfs_scrub *sc, int whichfork,44 xchk_da_btree_rec_fn scrub_fn, void *private);45 46#endif /* __XFS_SCRUB_DABTREE_H__ */47