sched/doc: Update documentation for base_slice_ns and CONFIG_HZ relation
[sfrench/cifs-2.6.git] / fs / bcachefs / recovery_types.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef _BCACHEFS_RECOVERY_TYPES_H
3 #define _BCACHEFS_RECOVERY_TYPES_H
4
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)
10
11 /*
12  * Passes may be reordered, but the second field is a persistent identifier and
13  * must never change:
14  */
15 #define BCH_RECOVERY_PASSES()                                                   \
16         x(alloc_read,                            0, PASS_ALWAYS)                \
17         x(stripes_read,                          1, PASS_ALWAYS)                \
18         x(initialize_subvolumes,                 2, 0)                          \
19         x(snapshots_read,                        3, PASS_ALWAYS)                \
20         x(check_topology,                        4, 0)                          \
21         x(check_allocations,                     5, PASS_FSCK)                  \
22         x(trans_mark_dev_sbs,                    6, PASS_ALWAYS|PASS_SILENT)    \
23         x(fs_journal_alloc,                      7, PASS_ALWAYS|PASS_SILENT)    \
24         x(set_may_go_rw,                         8, PASS_ALWAYS|PASS_SILENT)    \
25         x(journal_replay,                        9, PASS_ALWAYS)                \
26         x(check_alloc_info,                     10, PASS_ONLINE|PASS_FSCK)      \
27         x(check_lrus,                           11, PASS_ONLINE|PASS_FSCK)      \
28         x(check_btree_backpointers,             12, PASS_ONLINE|PASS_FSCK)      \
29         x(check_backpointers_to_extents,        13, PASS_ONLINE|PASS_FSCK)      \
30         x(check_extents_to_backpointers,        14, PASS_ONLINE|PASS_FSCK)      \
31         x(check_alloc_to_lru_refs,              15, PASS_ONLINE|PASS_FSCK)      \
32         x(fs_freespace_init,                    16, PASS_ALWAYS|PASS_SILENT)    \
33         x(bucket_gens_init,                     17, 0)                          \
34         x(check_snapshot_trees,                 18, PASS_ONLINE|PASS_FSCK)      \
35         x(check_snapshots,                      19, PASS_ONLINE|PASS_FSCK)      \
36         x(check_subvols,                        20, PASS_ONLINE|PASS_FSCK)      \
37         x(check_subvol_children,                35, PASS_ONLINE|PASS_FSCK)      \
38         x(delete_dead_snapshots,                21, PASS_ONLINE|PASS_FSCK)      \
39         x(fs_upgrade_for_subvolumes,            22, 0)                          \
40         x(resume_logged_ops,                    23, PASS_ALWAYS)                \
41         x(check_inodes,                         24, PASS_FSCK)                  \
42         x(check_extents,                        25, PASS_FSCK)                  \
43         x(check_indirect_extents,               26, PASS_FSCK)                  \
44         x(check_dirents,                        27, PASS_FSCK)                  \
45         x(check_xattrs,                         28, PASS_FSCK)                  \
46         x(check_root,                           29, PASS_ONLINE|PASS_FSCK)      \
47         x(check_subvolume_structure,            36, PASS_ONLINE|PASS_FSCK)      \
48         x(check_directory_structure,            30, PASS_ONLINE|PASS_FSCK)      \
49         x(check_nlinks,                         31, PASS_FSCK)                  \
50         x(delete_dead_inodes,                   32, PASS_FSCK|PASS_UNCLEAN)     \
51         x(fix_reflink_p,                        33, 0)                          \
52         x(set_fs_needs_rebalance,               34, 0)                          \
53
54 /* We normally enumerate recovery passes in the order we run them: */
55 enum bch_recovery_pass {
56 #define x(n, id, when)  BCH_RECOVERY_PASS_##n,
57         BCH_RECOVERY_PASSES()
58 #undef x
59 };
60
61 /* But we also need stable identifiers that can be used in the superblock */
62 enum bch_recovery_pass_stable {
63 #define x(n, id, when)  BCH_RECOVERY_PASS_STABLE_##n = id,
64         BCH_RECOVERY_PASSES()
65 #undef x
66 };
67
68 #endif /* _BCACHEFS_RECOVERY_TYPES_H */