Skip to content

Commit 82cf18f

Browse files
author
Kent Overstreet
committed
bcachefs: Fix deadlock in journal replay
btree_key_can_insert_cached() should be checking the watermark - BCH_TRANS_COMMIT_journal_replay really means nonblocking mode when watermark < reclaim, it was being used incorrectly. Signed-off-by: Kent Overstreet <[email protected]>
1 parent 4518e80 commit 82cf18f

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

fs/bcachefs/btree_trans_commit.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -397,12 +397,13 @@ static int btree_key_can_insert_cached(struct btree_trans *trans, unsigned flags
397397
struct bkey_cached *ck = (void *) path->l[0].b;
398398
unsigned new_u64s;
399399
struct bkey_i *new_k;
400+
unsigned watermark = flags & BCH_WATERMARK_MASK;
400401

401402
EBUG_ON(path->level);
402403

403-
if (!test_bit(BKEY_CACHED_DIRTY, &ck->flags) &&
404-
bch2_btree_key_cache_must_wait(c) &&
405-
!(flags & BCH_TRANS_COMMIT_journal_reclaim))
404+
if (watermark < BCH_WATERMARK_reclaim &&
405+
!test_bit(BKEY_CACHED_DIRTY, &ck->flags) &&
406+
bch2_btree_key_cache_must_wait(c))
406407
return -BCH_ERR_btree_insert_need_journal_reclaim;
407408

408409
/*

0 commit comments

Comments
 (0)