summaryrefslogtreecommitdiff
path: root/fs/bcachefs/journal_io.c
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2022-03-21 03:12:53 +0300
committerKent Overstreet <kent.overstreet@linux.dev>2023-10-23 00:09:28 +0300
commitb0be2fcfb425022025203c27ed75a20db8c6feda (patch)
treeaa2af905ab1256f5ac46dc58410a606cefe8691a /fs/bcachefs/journal_io.c
parent7a6f4411aeaae888a7b2880f0c046f9efb0d83cc (diff)
downloadlinux-b0be2fcfb425022025203c27ed75a20db8c6feda.tar.xz
bcachefs: Change journal_io.c assertion to error message
Something funny is going on with the new code for restoring the journal write point, and it's hard to reproduce. We do want to debug this because resuming writing to the journal in the wrong spot could be something serious. For now, replace the assertion with an error message and revert to old behaviour when it happens. Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
Diffstat (limited to 'fs/bcachefs/journal_io.c')
-rw-r--r--fs/bcachefs/journal_io.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/fs/bcachefs/journal_io.c b/fs/bcachefs/journal_io.c
index ba43e5771c7c..b2c3ee336c1f 100644
--- a/fs/bcachefs/journal_io.c
+++ b/fs/bcachefs/journal_io.c
@@ -964,8 +964,16 @@ static void bch2_journal_read_device(struct closure *cl)
}
mutex_unlock(&jlist->lock);
- BUG_ON(ja->bucket_seq[ja->cur_idx] &&
- ja->sectors_free == ca->mi.bucket_size);
+ if (ja->bucket_seq[ja->cur_idx] &&
+ ja->sectors_free == ca->mi.bucket_size) {
+ bch_err(c, "ja->sectors_free == ca->mi.bucket_size");
+ bch_err(c, "cur_idx %u/%u", ja->cur_idx, ja->nr);
+ for (i = 0; i < 3; i++) {
+ unsigned idx = (ja->cur_idx + ja->nr - 1 + i) % ja->nr;
+ bch_err(c, "bucket_seq[%u] = %llu", idx, ja->bucket_seq[idx]);
+ }
+ ja->sectors_free = 0;
+ }
/*
* Set dirty_idx to indicate the entire journal is full and needs to be