summaryrefslogtreecommitdiff
path: root/fs/bcachefs/journal_reclaim.c
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2020-11-18 21:21:59 +0300
committerKent Overstreet <kent.overstreet@linux.dev>2023-10-23 00:08:47 +0300
commited0e24c0992dffe494bdd0ea6ddf3b816c438524 (patch)
treebde3bdccc42561e514ba3d29947e3400556e764d /fs/bcachefs/journal_reclaim.c
parentd8ebed7d24cdf3d4596ab5af471f5e7f749d7aab (diff)
downloadlinux-ed0e24c0992dffe494bdd0ea6ddf3b816c438524.tar.xz
bcachefs: Be more precise with journal error reporting
We were incorrectly detecting a journal deadlock - the journal filling up - when only the journal pin fifo had filled up; if the journal pin fifo is full that just means we need to wait on reclaim. This plumbs through better error reporting so we can better discriminate in the journal_res_get path what's going on. Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com> Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'fs/bcachefs/journal_reclaim.c')
-rw-r--r--fs/bcachefs/journal_reclaim.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/fs/bcachefs/journal_reclaim.c b/fs/bcachefs/journal_reclaim.c
index f9e0160074db..1cd9c11a37f0 100644
--- a/fs/bcachefs/journal_reclaim.c
+++ b/fs/bcachefs/journal_reclaim.c
@@ -164,12 +164,12 @@ void bch2_journal_space_available(struct journal *j)
j->can_discard = can_discard;
if (nr_online < c->opts.metadata_replicas_required) {
- ret = -EROFS;
+ ret = cur_entry_insufficient_devices;
goto out;
}
if (!fifo_free(&j->pin)) {
- ret = -ENOSPC;
+ ret = cur_entry_journal_pin_full;
goto out;
}
@@ -180,7 +180,7 @@ void bch2_journal_space_available(struct journal *j)
clean = __journal_space_available(j, nr_devs_want, journal_space_clean);
if (!discarded.next_entry)
- ret = -ENOSPC;
+ ret = cur_entry_journal_full;
overhead = DIV_ROUND_UP(clean.remaining, max_entry_size) *
journal_entry_overhead(j);