|
7 | 7 | #define PASS_UNCLEAN BIT(2)
|
8 | 8 | #define PASS_ALWAYS BIT(3)
|
9 | 9 |
|
10 |
| -#define BCH_RECOVERY_PASSES() \ |
11 |
| - x(alloc_read, PASS_ALWAYS) \ |
12 |
| - x(stripes_read, PASS_ALWAYS) \ |
13 |
| - x(initialize_subvolumes, 0) \ |
14 |
| - x(snapshots_read, PASS_ALWAYS) \ |
15 |
| - x(check_topology, 0) \ |
16 |
| - x(check_allocations, PASS_FSCK) \ |
17 |
| - x(trans_mark_dev_sbs, PASS_ALWAYS|PASS_SILENT) \ |
18 |
| - x(fs_journal_alloc, PASS_ALWAYS|PASS_SILENT) \ |
19 |
| - x(set_may_go_rw, PASS_ALWAYS|PASS_SILENT) \ |
20 |
| - x(journal_replay, PASS_ALWAYS) \ |
21 |
| - x(check_alloc_info, PASS_FSCK) \ |
22 |
| - x(check_lrus, PASS_FSCK) \ |
23 |
| - x(check_btree_backpointers, PASS_FSCK) \ |
24 |
| - x(check_backpointers_to_extents,PASS_FSCK) \ |
25 |
| - x(check_extents_to_backpointers,PASS_FSCK) \ |
26 |
| - x(check_alloc_to_lru_refs, PASS_FSCK) \ |
27 |
| - x(fs_freespace_init, PASS_ALWAYS|PASS_SILENT) \ |
28 |
| - x(bucket_gens_init, 0) \ |
29 |
| - x(check_snapshot_trees, PASS_FSCK) \ |
30 |
| - x(check_snapshots, PASS_FSCK) \ |
31 |
| - x(check_subvols, PASS_FSCK) \ |
32 |
| - x(delete_dead_snapshots, PASS_FSCK) \ |
33 |
| - x(fs_upgrade_for_subvolumes, 0) \ |
34 |
| - x(resume_logged_ops, PASS_ALWAYS) \ |
35 |
| - x(check_inodes, PASS_FSCK) \ |
36 |
| - x(check_extents, PASS_FSCK) \ |
37 |
| - x(check_indirect_extents, PASS_FSCK) \ |
38 |
| - x(check_dirents, PASS_FSCK) \ |
39 |
| - x(check_xattrs, PASS_FSCK) \ |
40 |
| - x(check_root, PASS_FSCK) \ |
41 |
| - x(check_directory_structure, PASS_FSCK) \ |
42 |
| - x(check_nlinks, PASS_FSCK) \ |
43 |
| - x(delete_dead_inodes, PASS_FSCK|PASS_UNCLEAN) \ |
44 |
| - x(fix_reflink_p, 0) \ |
45 |
| - x(set_fs_needs_rebalance, 0) \ |
| 10 | +/* |
| 11 | + * Passes may be reordered, but the second field is a persistent identifier and |
| 12 | + * must never change: |
| 13 | + */ |
| 14 | +#define BCH_RECOVERY_PASSES() \ |
| 15 | + x(alloc_read, 0, PASS_ALWAYS) \ |
| 16 | + x(stripes_read, 1, PASS_ALWAYS) \ |
| 17 | + x(initialize_subvolumes, 2, 0) \ |
| 18 | + x(snapshots_read, 3, PASS_ALWAYS) \ |
| 19 | + x(check_topology, 4, 0) \ |
| 20 | + x(check_allocations, 5, PASS_FSCK) \ |
| 21 | + x(trans_mark_dev_sbs, 6, PASS_ALWAYS|PASS_SILENT) \ |
| 22 | + x(fs_journal_alloc, 7, PASS_ALWAYS|PASS_SILENT) \ |
| 23 | + x(set_may_go_rw, 8, PASS_ALWAYS|PASS_SILENT) \ |
| 24 | + x(journal_replay, 9, PASS_ALWAYS) \ |
| 25 | + x(check_alloc_info, 10, PASS_FSCK) \ |
| 26 | + x(check_lrus, 11, PASS_FSCK) \ |
| 27 | + x(check_btree_backpointers, 12, PASS_FSCK) \ |
| 28 | + x(check_backpointers_to_extents, 13, PASS_FSCK) \ |
| 29 | + x(check_extents_to_backpointers, 14, PASS_FSCK) \ |
| 30 | + x(check_alloc_to_lru_refs, 15, PASS_FSCK) \ |
| 31 | + x(fs_freespace_init, 16, PASS_ALWAYS|PASS_SILENT) \ |
| 32 | + x(bucket_gens_init, 17, 0) \ |
| 33 | + x(check_snapshot_trees, 18, PASS_FSCK) \ |
| 34 | + x(check_snapshots, 19, PASS_FSCK) \ |
| 35 | + x(check_subvols, 20, PASS_FSCK) \ |
| 36 | + x(delete_dead_snapshots, 21, PASS_FSCK) \ |
| 37 | + x(fs_upgrade_for_subvolumes, 22, 0) \ |
| 38 | + x(resume_logged_ops, 23, PASS_ALWAYS) \ |
| 39 | + x(check_inodes, 24, PASS_FSCK) \ |
| 40 | + x(check_extents, 25, PASS_FSCK) \ |
| 41 | + x(check_indirect_extents, 26, PASS_FSCK) \ |
| 42 | + x(check_dirents, 27, PASS_FSCK) \ |
| 43 | + x(check_xattrs, 28, PASS_FSCK) \ |
| 44 | + x(check_root, 29, PASS_FSCK) \ |
| 45 | + x(check_directory_structure, 30, PASS_FSCK) \ |
| 46 | + x(check_nlinks, 31, PASS_FSCK) \ |
| 47 | + x(delete_dead_inodes, 32, PASS_FSCK|PASS_UNCLEAN) \ |
| 48 | + x(fix_reflink_p, 33, 0) \ |
| 49 | + x(set_fs_needs_rebalance, 34, 0) \ |
46 | 50 |
|
| 51 | +/* We normally enumerate recovery passes in the order we run them: */ |
47 | 52 | enum bch_recovery_pass {
|
48 |
| -#define x(n, when) BCH_RECOVERY_PASS_##n, |
| 53 | +#define x(n, id, when) BCH_RECOVERY_PASS_##n, |
| 54 | + BCH_RECOVERY_PASSES() |
| 55 | +#undef x |
| 56 | +}; |
| 57 | + |
| 58 | +/* But we also need stable identifiers that can be used in the superblock */ |
| 59 | +enum bch_recovery_pass_stable { |
| 60 | +#define x(n, id, when) BCH_RECOVERY_PASS_STABLE_##n = id, |
49 | 61 | BCH_RECOVERY_PASSES()
|
50 | 62 | #undef x
|
51 | 63 | };
|
|
0 commit comments