diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2022-06-06 23:34:58 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@gmail.com> | 2022-06-07 00:23:32 -0400 |
commit | 3e3642b2fdeb2dc5991055e60049558e1ab2a9c8 (patch) | |
tree | cd89c121bf7c23ca318e10bcf70b388ce7d4dcd0 | |
parent | 1495936db7d57b0ebcf30304d4f3a8703b6e2904 (diff) |
fixup! bcachefs: Gap buffer for journal keys
-rw-r--r-- | fs/bcachefs/recovery.c | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/fs/bcachefs/recovery.c b/fs/bcachefs/recovery.c index d08ceb160ae0..0e4cae8ddfbb 100644 --- a/fs/bcachefs/recovery.c +++ b/fs/bcachefs/recovery.c @@ -297,32 +297,32 @@ void bch2_journal_key_overwritten(struct bch_fs *c, enum btree_id btree, keys->d[idx].overwritten = true; } -static struct bkey_i *bch2_journal_iter_peek(struct journal_iter *iter) +static void bch2_journal_iter_advance(struct journal_iter *iter) +{ + if (iter->idx < iter->keys->size) { + iter->idx++; + if (iter->idx == iter->keys->gap) + iter->idx += iter->keys->size - iter->keys->nr; + } +} + +struct bkey_i *bch2_journal_iter_peek(struct journal_iter *iter) { struct journal_key *k = iter->keys->d + iter->idx; - while (k < iter->keys->d + iter->keys->nr && + while (k < iter->keys->d + iter->keys->size && k->btree_id == iter->btree_id && k->level == iter->level) { if (!k->overwritten) return k->k; - iter->idx++; + bch2_journal_iter_advance(iter); k = iter->keys->d + iter->idx; } return NULL; } -static void bch2_journal_iter_advance(struct journal_iter *iter) -{ - if (iter->idx < iter->keys->size) { - iter->idx++; - if (iter->idx == iter->keys->gap) - iter->idx += iter->keys->size - iter->keys->nr; - } -} - static void bch2_journal_iter_exit(struct journal_iter *iter) { list_del(&iter->list); |