From: Kent Overstreet Date: Sat, 27 Aug 2022 16:37:05 +0000 (-0400) Subject: bcachefs: Fix bch2_btree_update_start() to return -BCH_ERR_journal_reclaim_would_deadlock X-Git-Tag: v6.7-rc1~201^2~806 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d97e6aaed60a9c2c727cce2979ca311fe232163f;p=thirdparty%2Fkernel%2Flinux.git 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 --- 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);