Commit 85674154 authored by Kent Overstreet's avatar Kent Overstreet Committed by Kent Overstreet

bcachefs: Dump journal state when we get stuck

We had a bug reported where the journal is failing to allocate a journal
write - this should help figure out what's going on.
Signed-off-by: default avatarKent Overstreet <kent.overstreet@gmail.com>
Signed-off-by: default avatarKent Overstreet <kent.overstreet@linux.dev>
parent 514852c2
......@@ -1383,6 +1383,7 @@ void bch2_journal_write(struct closure *cl)
struct jset_entry *start, *end;
struct jset *jset;
struct bio *bio;
char *journal_debug_buf = NULL;
bool validate_before_checksum = false;
unsigned i, sectors, bytes, u64s, nr_rw_members = 0;
int ret;
......@@ -1484,6 +1485,12 @@ void bch2_journal_write(struct closure *cl)
goto retry_alloc;
}
if (ret) {
journal_debug_buf = kmalloc(4096, GFP_ATOMIC);
if (journal_debug_buf)
__bch2_journal_debug_to_text(&_PBUF(journal_debug_buf, 4096), j);
}
/*
* write is allocated, no longer need to account for it in
* bch2_journal_space_available():
......@@ -1498,7 +1505,9 @@ void bch2_journal_write(struct closure *cl)
spin_unlock(&j->lock);
if (ret) {
bch_err(c, "Unable to allocate journal write");
bch_err(c, "Unable to allocate journal write:\n%s",
journal_debug_buf);
kfree(journal_debug_buf);
bch2_fatal_error(c);
continue_at(cl, journal_write_done, system_highpri_wq);
return;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment