1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef _BCACHEFS_RECOVERY_TYPES_H
3 #define _BCACHEFS_RECOVERY_TYPES_H
5 #define PASS_SILENT BIT(0)
6 #define PASS_FSCK BIT(1)
7 #define PASS_UNCLEAN BIT(2)
8 #define PASS_ALWAYS BIT(3)
9 #define PASS_ONLINE BIT(4)
11 #define BCH_RECOVERY_PASSES() \
12 x(alloc_read, PASS_ALWAYS) \
13 x(stripes_read, PASS_ALWAYS) \
14 x(initialize_subvolumes, 0) \
15 x(snapshots_read, PASS_ALWAYS) \
16 x(check_topology, 0) \
17 x(check_allocations, PASS_FSCK) \
18 x(trans_mark_dev_sbs, PASS_ALWAYS|PASS_SILENT) \
19 x(fs_journal_alloc, PASS_ALWAYS|PASS_SILENT) \
20 x(set_may_go_rw, PASS_ALWAYS|PASS_SILENT) \
21 x(journal_replay, PASS_ALWAYS) \
22 x(check_alloc_info, PASS_ONLINE|PASS_FSCK) \
23 x(check_lrus, PASS_ONLINE|PASS_FSCK) \
24 x(check_btree_backpointers, PASS_ONLINE|PASS_FSCK) \
25 x(check_backpointers_to_extents, PASS_ONLINE|PASS_FSCK) \
26 x(check_extents_to_backpointers, PASS_ONLINE|PASS_FSCK) \
27 x(check_alloc_to_lru_refs, PASS_ONLINE|PASS_FSCK) \
28 x(fs_freespace_init, PASS_ALWAYS|PASS_SILENT) \
29 x(bucket_gens_init, 0) \
30 x(check_snapshot_trees, PASS_ONLINE|PASS_FSCK) \
31 x(check_snapshots, PASS_ONLINE|PASS_FSCK) \
32 x(check_subvols, PASS_ONLINE|PASS_FSCK) \
33 x(delete_dead_snapshots, PASS_ONLINE|PASS_FSCK) \
34 x(fs_upgrade_for_subvolumes, 0) \
35 x(resume_logged_ops, PASS_ALWAYS) \
36 x(check_inodes, PASS_FSCK) \
37 x(check_extents, PASS_FSCK) \
38 x(check_indirect_extents, PASS_FSCK) \
39 x(check_dirents, PASS_FSCK) \
40 x(check_xattrs, PASS_FSCK) \
41 x(check_root, PASS_ONLINE|PASS_FSCK) \
42 x(check_directory_structure, PASS_ONLINE|PASS_FSCK) \
43 x(check_nlinks, PASS_FSCK) \
44 x(delete_dead_inodes, PASS_FSCK|PASS_UNCLEAN) \
46 x(set_fs_needs_rebalance, 0) \
48 enum bch_recovery_pass {
49 #define x(n, when) BCH_RECOVERY_PASS_##n,
54 #endif /* _BCACHEFS_RECOVERY_TYPES_H */