]> git.sesse.net Git - bcachefs-tools-debian/blobdiff - libbcachefs/recovery_types.h
Update bcachefs sources to 2a6125decb43 bcachefs: bch_sb_field_downgrade
[bcachefs-tools-debian] / libbcachefs / recovery_types.h
index 2d139864e27fe145ffd57615719f97cfd74645d4..fa0c8efd2a1b42450535474079b791aa2e6e9938 100644 (file)
@@ -8,45 +8,57 @@
 #define PASS_ALWAYS            BIT(3)
 #define PASS_ONLINE            BIT(4)
 
+/*
+ * Passes may be reordered, but the second field is a persistent identifier and
+ * must never change:
+ */
 #define BCH_RECOVERY_PASSES()                                                  \
-       x(alloc_read,                           PASS_ALWAYS)                    \
-       x(stripes_read,                         PASS_ALWAYS)                    \
-       x(initialize_subvolumes,                0)                              \
-       x(snapshots_read,                       PASS_ALWAYS)                    \
-       x(check_topology,                       0)                              \
-       x(check_allocations,                    PASS_FSCK)                      \
-       x(trans_mark_dev_sbs,                   PASS_ALWAYS|PASS_SILENT)        \
-       x(fs_journal_alloc,                     PASS_ALWAYS|PASS_SILENT)        \
-       x(set_may_go_rw,                        PASS_ALWAYS|PASS_SILENT)        \
-       x(journal_replay,                       PASS_ALWAYS)                    \
-       x(check_alloc_info,                     PASS_ONLINE|PASS_FSCK)          \
-       x(check_lrus,                           PASS_ONLINE|PASS_FSCK)          \
-       x(check_btree_backpointers,             PASS_ONLINE|PASS_FSCK)          \
-       x(check_backpointers_to_extents,        PASS_ONLINE|PASS_FSCK)          \
-       x(check_extents_to_backpointers,        PASS_ONLINE|PASS_FSCK)          \
-       x(check_alloc_to_lru_refs,              PASS_ONLINE|PASS_FSCK)          \
-       x(fs_freespace_init,                    PASS_ALWAYS|PASS_SILENT)        \
-       x(bucket_gens_init,                     0)                              \
-       x(check_snapshot_trees,                 PASS_ONLINE|PASS_FSCK)          \
-       x(check_snapshots,                      PASS_ONLINE|PASS_FSCK)          \
-       x(check_subvols,                        PASS_ONLINE|PASS_FSCK)          \
-       x(delete_dead_snapshots,                PASS_ONLINE|PASS_FSCK)          \
-       x(fs_upgrade_for_subvolumes,            0)                              \
-       x(resume_logged_ops,                    PASS_ALWAYS)                    \
-       x(check_inodes,                         PASS_FSCK)                      \
-       x(check_extents,                        PASS_FSCK)                      \
-       x(check_indirect_extents,               PASS_FSCK)                      \
-       x(check_dirents,                        PASS_FSCK)                      \
-       x(check_xattrs,                         PASS_FSCK)                      \
-       x(check_root,                           PASS_ONLINE|PASS_FSCK)          \
-       x(check_directory_structure,            PASS_ONLINE|PASS_FSCK)          \
-       x(check_nlinks,                         PASS_FSCK)                      \
-       x(delete_dead_inodes,                   PASS_FSCK|PASS_UNCLEAN)         \
-       x(fix_reflink_p,                        0)                              \
-       x(set_fs_needs_rebalance,               0)                              \
+       x(alloc_read,                            0, PASS_ALWAYS)                \
+       x(stripes_read,                          1, PASS_ALWAYS)                \
+       x(initialize_subvolumes,                 2, 0)                          \
+       x(snapshots_read,                        3, PASS_ALWAYS)                \
+       x(check_topology,                        4, 0)                          \
+       x(check_allocations,                     5, PASS_FSCK)                  \
+       x(trans_mark_dev_sbs,                    6, PASS_ALWAYS|PASS_SILENT)    \
+       x(fs_journal_alloc,                      7, PASS_ALWAYS|PASS_SILENT)    \
+       x(set_may_go_rw,                         8, PASS_ALWAYS|PASS_SILENT)    \
+       x(journal_replay,                        9, PASS_ALWAYS)                \
+       x(check_alloc_info,                     10, PASS_ONLINE|PASS_FSCK)      \
+       x(check_lrus,                           11, PASS_ONLINE|PASS_FSCK)      \
+       x(check_btree_backpointers,             12, PASS_ONLINE|PASS_FSCK)      \
+       x(check_backpointers_to_extents,        13, PASS_ONLINE|PASS_FSCK)      \
+       x(check_extents_to_backpointers,        14, PASS_ONLINE|PASS_FSCK)      \
+       x(check_alloc_to_lru_refs,              15, PASS_ONLINE|PASS_FSCK)      \
+       x(fs_freespace_init,                    16, PASS_ALWAYS|PASS_SILENT)    \
+       x(bucket_gens_init,                     17, 0)                          \
+       x(check_snapshot_trees,                 18, PASS_ONLINE|PASS_FSCK)      \
+       x(check_snapshots,                      19, PASS_ONLINE|PASS_FSCK)      \
+       x(check_subvols,                        20, PASS_ONLINE|PASS_FSCK)      \
+       x(delete_dead_snapshots,                21, PASS_ONLINE|PASS_FSCK)      \
+       x(fs_upgrade_for_subvolumes,            22, 0)                          \
+       x(resume_logged_ops,                    23, PASS_ALWAYS)                \
+       x(check_inodes,                         24, PASS_FSCK)                  \
+       x(check_extents,                        25, PASS_FSCK)                  \
+       x(check_indirect_extents,               26, PASS_FSCK)                  \
+       x(check_dirents,                        27, PASS_FSCK)                  \
+       x(check_xattrs,                         28, PASS_FSCK)                  \
+       x(check_root,                           29, PASS_ONLINE|PASS_FSCK)      \
+       x(check_directory_structure,            30, PASS_ONLINE|PASS_FSCK)      \
+       x(check_nlinks,                         31, PASS_FSCK)                  \
+       x(delete_dead_inodes,                   32, PASS_FSCK|PASS_UNCLEAN)     \
+       x(fix_reflink_p,                        33, 0)                          \
+       x(set_fs_needs_rebalance,               34, 0)                          \
 
+/* We normally enumerate recovery passes in the order we run them: */
 enum bch_recovery_pass {
-#define x(n, when)     BCH_RECOVERY_PASS_##n,
+#define x(n, id, when) BCH_RECOVERY_PASS_##n,
+       BCH_RECOVERY_PASSES()
+#undef x
+};
+
+/* But we also need stable identifiers that can be used in the superblock */
+enum bch_recovery_pass_stable {
+#define x(n, id, when) BCH_RECOVERY_PASS_STABLE_##n = id,
        BCH_RECOVERY_PASSES()
 #undef x
 };