]> git.sesse.net Git - bcachefs-tools-debian/blobdiff - libbcachefs/bcachefs.h
Update bcachefs sources to e14d7c7195 bcachefs: Compression levels
[bcachefs-tools-debian] / libbcachefs / bcachefs.h
index b8d50fe64b3c9c437083d85c7d814dd6ded24150..445d010c83b33f3672ed6f3006941985d1c77355 100644 (file)
@@ -564,11 +564,6 @@ enum {
 
        /* fsck passes: */
        BCH_FS_TOPOLOGY_REPAIR_DONE,
-       BCH_FS_INITIAL_GC_DONE,         /* kill when we enumerate fsck passes */
-       BCH_FS_CHECK_ALLOC_DONE,
-       BCH_FS_CHECK_LRUS_DONE,
-       BCH_FS_CHECK_BACKPOINTERS_DONE,
-       BCH_FS_CHECK_ALLOC_TO_LRU_REFS_DONE,
        BCH_FS_FSCK_DONE,
        BCH_FS_INITIAL_GC_UNFIXED,      /* kill when we enumerate fsck errors */
        BCH_FS_NEED_ANOTHER_GC,
@@ -661,6 +656,47 @@ enum bch_write_ref {
        BCH_WRITE_REF_NR,
 };
 
+#define PASS_SILENT            BIT(0)
+#define PASS_FSCK              BIT(1)
+#define PASS_UNCLEAN           BIT(2)
+#define PASS_ALWAYS            BIT(3)
+
+#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_allocations,            PASS_FSCK)                                              \
+       x(set_may_go_rw,                PASS_ALWAYS|PASS_SILENT)                                \
+       x(journal_replay,               PASS_ALWAYS)                                            \
+       x(check_alloc_info,             PASS_FSCK)                                              \
+       x(check_lrus,                   PASS_FSCK)                                              \
+       x(check_btree_backpointers,     PASS_FSCK)                                              \
+       x(check_backpointers_to_extents,PASS_FSCK)                                              \
+       x(check_extents_to_backpointers,PASS_FSCK)                                              \
+       x(check_alloc_to_lru_refs,      PASS_FSCK)                                              \
+       x(fs_freespace_init,            PASS_ALWAYS|PASS_SILENT)                                \
+       x(bucket_gens_init,             0)                                                      \
+       x(fs_upgrade_for_subvolumes,    0)                                                      \
+       x(check_snapshot_trees,         PASS_FSCK)                                              \
+       x(check_snapshots,              PASS_FSCK)                                              \
+       x(check_subvols,                PASS_FSCK)                                              \
+       x(delete_dead_snapshots,        PASS_FSCK|PASS_UNCLEAN|PASS_SILENT)                     \
+       x(check_inodes,                 PASS_FSCK|PASS_UNCLEAN)                                 \
+       x(check_extents,                PASS_FSCK)                                              \
+       x(check_dirents,                PASS_FSCK)                                              \
+       x(check_xattrs,                 PASS_FSCK)                                              \
+       x(check_root,                   PASS_FSCK)                                              \
+       x(check_directory_structure,    PASS_FSCK)                                              \
+       x(check_nlinks,                 PASS_FSCK)                                              \
+       x(fix_reflink_p,                0)                                                      \
+
+enum bch_recovery_pass {
+#define x(n, when)     BCH_RECOVERY_PASS_##n,
+       BCH_RECOVERY_PASSES()
+#undef x
+};
+
 struct bch_fs {
        struct closure          cl;
 
@@ -712,6 +748,7 @@ struct bch_fs {
 
                u16             version;
                u16             version_min;
+               u16             version_upgrade_complete;
 
                u8              nr_devices;
                u8              clean;
@@ -737,9 +774,10 @@ struct bch_fs {
        struct mutex            sb_lock;
 
        /* snapshot.c: */
-       GENRADIX(struct snapshot_t) snapshots;
-       struct bch_snapshot_table __rcu *snapshot_table;
+       struct snapshot_table __rcu *snapshots;
+       size_t                  snapshot_table_size;
        struct mutex            snapshot_table_lock;
+
        struct work_struct      snapshot_delete_work;
        struct work_struct      snapshot_wait_for_pagecache_and_delete_work;
        snapshot_id_list        snapshots_unlinked;
@@ -749,7 +787,8 @@ struct bch_fs {
        struct bio_set          btree_bio;
        struct workqueue_struct *io_complete_wq;
 
-       struct btree_root       btree_roots[BTREE_ID_NR];
+       struct btree_root       btree_roots_known[BTREE_ID_NR];
+       DARRAY(struct btree_root) btree_roots_extra;
        struct mutex            btree_root_lock;
 
        struct btree_cache      btree_cache;
@@ -990,6 +1029,13 @@ struct bch_fs {
        /* QUOTAS */
        struct bch_memquota_type quotas[QTYP_NR];
 
+       /* RECOVERY */
+       u64                     journal_replay_seq_start;
+       u64                     journal_replay_seq_end;
+       enum bch_recovery_pass  curr_recovery_pass;
+       /* bitmap of explicitly enabled recovery passes: */
+       u64                     recovery_passes_explicit;
+
        /* DEBUG JUNK */
        struct dentry           *fs_debug_dir;
        struct dentry           *btree_debug_dir;