]> git.sesse.net Git - bcachefs-tools-debian/blob - libbcachefs/recovery.h
Update bcachefs sources to 9017d85854 bcachefs: btree_ptr_v2
[bcachefs-tools-debian] / libbcachefs / recovery.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef _BCACHEFS_RECOVERY_H
3 #define _BCACHEFS_RECOVERY_H
4
5 struct journal_keys {
6         struct journal_key {
7                 enum btree_id   btree_id:8;
8                 unsigned        allocated:1;
9                 struct bpos     pos;
10                 struct bkey_i   *k;
11                 u32             journal_seq;
12                 u32             journal_offset;
13         }                       *d;
14         size_t                  nr;
15         u64                     journal_seq_base;
16 };
17
18 #define for_each_journal_key(keys, i)                           \
19         for (i = (keys).d; i < (keys).d + (keys).nr; (i)++)
20
21 struct journal_iter {
22         struct journal_keys     *keys;
23         struct journal_key      *k;
24         enum btree_id           btree_id;
25 };
26
27 struct btree_and_journal_iter {
28         enum btree_id           btree_id;
29
30         struct btree_iter       *btree;
31         struct journal_iter     journal;
32
33         enum last_key_returned {
34                 none,
35                 btree,
36                 journal,
37         }                       last;
38 };
39
40 void bch2_btree_and_journal_iter_advance(struct btree_and_journal_iter *);
41 struct bkey_s_c bch2_btree_and_journal_iter_peek(struct btree_and_journal_iter *);
42 struct bkey_s_c bch2_btree_and_journal_iter_next(struct btree_and_journal_iter *);
43 struct journal_key *journal_key_search(struct journal_keys *,
44                                        enum btree_id, struct bpos);
45 void bch2_btree_and_journal_iter_init(struct btree_and_journal_iter *,
46                                       struct btree_trans *,
47                                       struct journal_keys *,
48                                       enum btree_id, struct bpos);
49
50 int bch2_fs_recovery(struct bch_fs *);
51 int bch2_fs_initialize(struct bch_fs *);
52
53 #endif /* _BCACHEFS_RECOVERY_H */