Commit | Line | Data |
---|---|---|
0b61f8a4 | 1 | // SPDX-License-Identifier: GPL-2.0+ |
7c4a07a4 DW |
2 | /* |
3 | * Copyright (C) 2017 Oracle. All Rights Reserved. | |
7c4a07a4 | 4 | * Author: Darrick J. Wong <darrick.wong@oracle.com> |
7c4a07a4 DW |
5 | */ |
6 | #ifndef __XFS_SCRUB_DABTREE_H__ | |
7 | #define __XFS_SCRUB_DABTREE_H__ | |
8 | ||
9 | /* dir/attr btree */ | |
10 | ||
c517b3aa | 11 | struct xchk_da_btree { |
032d91f9 DW |
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; | |
1d8a748a | 16 | struct xfs_scrub *sc; |
032d91f9 | 17 | void *private; |
7c4a07a4 DW |
18 | |
19 | /* | |
20 | * Lowest and highest directory block address in which we expect | |
21 | * to find dir/attr btree node blocks. For a directory this | |
22 | * (presumably) means between LEAF_OFFSET and FREE_OFFSET; for | |
23 | * attributes there is no limit. | |
24 | */ | |
032d91f9 DW |
25 | xfs_dablk_t lowest; |
26 | xfs_dablk_t highest; | |
7c4a07a4 | 27 | |
032d91f9 | 28 | int tree_level; |
7c4a07a4 DW |
29 | }; |
30 | ||
c517b3aa | 31 | typedef int (*xchk_da_btree_rec_fn)(struct xchk_da_btree *ds, |
7c4a07a4 DW |
32 | int level, void *rec); |
33 | ||
34 | /* Check for da btree operation errors. */ | |
c517b3aa | 35 | bool xchk_da_process_error(struct xchk_da_btree *ds, int level, int *error); |
7c4a07a4 DW |
36 | |
37 | /* Check for da btree corruption. */ | |
c517b3aa | 38 | void xchk_da_set_corrupt(struct xchk_da_btree *ds, int level); |
7c4a07a4 | 39 | |
032d91f9 | 40 | int xchk_da_btree_hash(struct xchk_da_btree *ds, int level, __be32 *hashp); |
1d8a748a | 41 | int xchk_da_btree(struct xfs_scrub *sc, int whichfork, |
032d91f9 | 42 | xchk_da_btree_rec_fn scrub_fn, void *private); |
7c4a07a4 DW |
43 | |
44 | #endif /* __XFS_SCRUB_DABTREE_H__ */ |