diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2019-12-28 04:51:35 +0300 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2023-10-23 00:08:35 +0300 |
commit | 5c4a5cd5b379567f648c0f5d0f9ec7550bc8b67e (patch) | |
tree | 4dd2c2474f8cd221d1333e1c07082cb2fad4dc10 /fs/bcachefs/recovery.h | |
parent | 8b53852d0a80ec4e438205bf8eb3a5a73ee8238c (diff) | |
download | linux-5c4a5cd5b379567f648c0f5d0f9ec7550bc8b67e.tar.xz |
bcachefs: btree_and_journal_iter
Introduce a new iterator that iterates over keys in the btree with keys
from the journal overlaid on top. This factors out what the erasure
coding init code was doing manually.
Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'fs/bcachefs/recovery.h')
-rw-r--r-- | fs/bcachefs/recovery.h | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/fs/bcachefs/recovery.h b/fs/bcachefs/recovery.h index 479ea46f8dcb..ccd84a8fe60d 100644 --- a/fs/bcachefs/recovery.h +++ b/fs/bcachefs/recovery.h @@ -24,10 +24,28 @@ struct journal_iter { enum btree_id btree_id; }; -struct journal_iter bch2_journal_iter_init(struct journal_keys *, - enum btree_id); -struct bkey_s_c bch2_journal_iter_peek(struct journal_iter *); -struct bkey_s_c bch2_journal_iter_next(struct journal_iter *); +struct btree_and_journal_iter { + enum btree_id btree_id; + + struct btree_iter *btree; + struct journal_iter journal; + + enum last_key_returned { + none, + btree, + journal, + } last; +}; + +void bch2_btree_and_journal_iter_advance(struct btree_and_journal_iter *); +struct bkey_s_c bch2_btree_and_journal_iter_peek(struct btree_and_journal_iter *); +struct bkey_s_c bch2_btree_and_journal_iter_next(struct btree_and_journal_iter *); +struct journal_key *journal_key_search(struct journal_keys *, + enum btree_id, struct bpos); +void bch2_btree_and_journal_iter_init(struct btree_and_journal_iter *, + struct btree_trans *, + struct journal_keys *, + enum btree_id, struct bpos); int bch2_fs_recovery(struct bch_fs *); int bch2_fs_initialize(struct bch_fs *); |