summaryrefslogtreecommitdiff
path: root/fs/bcachefs/recovery.c
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2022-01-01 20:45:30 -0500
committerKent Overstreet <kent.overstreet@gmail.com>2022-05-30 18:16:59 -0400
commit89f3ac6a8a776b248c9c62bd2af4db4e420e61a5 (patch)
tree3319d6db45dea8f3f8ebae2874f17efed10b670a /fs/bcachefs/recovery.c
parente6326599c4a240770d3dbbb84fed0b379f777709 (diff)
bcachefs: Tweak journal reclaim order
Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
Diffstat (limited to 'fs/bcachefs/recovery.c')
-rw-r--r--fs/bcachefs/recovery.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/fs/bcachefs/recovery.c b/fs/bcachefs/recovery.c
index 39b5b97704b7..219351654564 100644
--- a/fs/bcachefs/recovery.c
+++ b/fs/bcachefs/recovery.c
@@ -116,12 +116,19 @@ int bch2_journal_key_insert_take(struct bch_fs *c, enum btree_id id,
.btree_id = id,
.level = level,
.k = k,
- .allocated = true
+ .allocated = true,
+ /*
+ * Ensure these keys are done last by journal replay, to unblock
+ * journal reclaim:
+ */
+ .journal_seq = U32_MAX,
};
struct journal_keys *keys = &c->journal_keys;
struct journal_iter *iter;
unsigned idx = journal_key_search(keys, id, level, k->k.p);
+ BUG_ON(test_bit(BCH_FS_RW, &c->flags));
+
if (idx < keys->nr &&
journal_key_cmp(&n, &keys->d[idx]) == 0) {
if (keys->d[idx].allocated)