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: Kent Overstreet <kent.overstreet@gmail.com> Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
parent
514852c2b5
commit
8567415457
@ -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 @@ retry_alloc:
|
||||
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 @@ retry_alloc:
|
||||
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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user