From d97e6aaed60a9c2c727cce2979ca311fe232163f Mon Sep 17 00:00:00 2001 From: Kent Overstreet Date: Sat, 27 Aug 2022 12:37:05 -0400 Subject: [PATCH] bcachefs: Fix bch2_btree_update_start() to return -BCH_ERR_journal_reclaim_would_deadlock On failure to get a journal pre-reservation because we're called from journal reclaim we're not supposed to return a transaction restart error - this fixes a livelock. Signed-off-by: Kent Overstreet --- fs/bcachefs/btree_update_interior.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/fs/bcachefs/btree_update_interior.c b/fs/bcachefs/btree_update_interior.c index fc768195be548..dd9405c631f5f 100644 --- a/fs/bcachefs/btree_update_interior.c +++ b/fs/bcachefs/btree_update_interior.c @@ -1049,6 +1049,11 @@ bch2_btree_update_start(struct btree_trans *trans, struct btree_path *path, if (ret) { bch2_trans_unlock(trans); + if (flags & BTREE_INSERT_JOURNAL_RECLAIM) { + ret = -BCH_ERR_journal_reclaim_would_deadlock; + goto err; + } + ret = bch2_journal_preres_get(&c->journal, &as->journal_preres, BTREE_UPDATE_JOURNAL_RES, journal_flags); -- 2.39.5