bcachefs: Fix a scheduler splat in __bch2_next_write_buffer_flush_journal_buf()
authorKent Overstreet <kent.overstreet@linux.dev>
Mon, 6 May 2024 14:14:13 +0000 (10:14 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Mon, 6 May 2024 14:14:13 +0000 (10:14 -0400)
We're using mutex_lock() inside a wait_event() conditional -
prepare_to_wait() has already flipped task state, so potentially
blocking ops need annotation.

Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/journal.c

index 9c9a25d..9c2af54 100644 (file)
@@ -870,6 +870,8 @@ static struct journal_buf *__bch2_next_write_buffer_flush_journal_buf(struct jou
 {
        struct journal_buf *ret = NULL;
 
+       /* We're inside wait_event(), but using mutex_lock(: */
+       sched_annotate_sleep();
        mutex_lock(&j->buf_lock);
        spin_lock(&j->lock);
        max_seq = min(max_seq, journal_cur_seq(j));