From: Kent Overstreet Date: Sun, 30 Jun 2024 01:40:57 +0000 (-0400) Subject: bcachefs: Fix journal getting stuck on a flush commit X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=0435773239b5afe25801e83c8252e04299a0e306;p=users%2Fdwmw2%2Flinux.git bcachefs: Fix journal getting stuck on a flush commit silly race Signed-off-by: Kent Overstreet --- diff --git a/fs/bcachefs/journal_io.c b/fs/bcachefs/journal_io.c index db24ce21b2acf..f17c478a18e88 100644 --- a/fs/bcachefs/journal_io.c +++ b/fs/bcachefs/journal_io.c @@ -1762,11 +1762,13 @@ static CLOSURE_CALLBACK(journal_write_preflush) if (j->seq_ondisk + 1 != le64_to_cpu(w->data->seq)) { spin_lock(&j->lock); - closure_wait(&j->async_wait, cl); + if (j->seq_ondisk + 1 != le64_to_cpu(w->data->seq)) { + closure_wait(&j->async_wait, cl); + spin_unlock(&j->lock); + continue_at(cl, journal_write_preflush, j->wq); + return; + } spin_unlock(&j->lock); - - continue_at(cl, journal_write_preflush, j->wq); - return; } if (w->separate_flush) {