aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2019-03-07 17:19:04 -0500
committerKent Overstreet <kent.overstreet@linux.dev>2023-10-22 17:08:17 -0400
commitb5d056358d1da10738500a272a4e7967d55e9341 (patch)
tree12af95ee3e7a0c61845a015d443bcba36f293d5f
parent59928c12206ce8f478113403562947e21a47883a (diff)
bcachefs: minor journal reclaim fixes
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
-rw-r--r--fs/bcachefs/journal_reclaim.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/fs/bcachefs/journal_reclaim.c b/fs/bcachefs/journal_reclaim.c
index 053fa4aa4f5f..2f67ea2debd2 100644
--- a/fs/bcachefs/journal_reclaim.c
+++ b/fs/bcachefs/journal_reclaim.c
@@ -502,8 +502,8 @@ void bch2_journal_reclaim(struct journal *j)
nr_buckets = min(nr_buckets, ja->nr);
bucket_to_flush = (ja->cur_idx + nr_buckets) % ja->nr;
- seq_to_flush = max_t(u64, seq_to_flush,
- ja->bucket_seq[bucket_to_flush]);
+ seq_to_flush = max(seq_to_flush,
+ ja->bucket_seq[bucket_to_flush]);
}
/* Also flush if the pin fifo is more than half full */
@@ -520,12 +520,14 @@ void bch2_journal_reclaim(struct journal *j)
msecs_to_jiffies(j->reclaim_delay_ms)))
min_nr = 1;
- if (j->prereserved.reserved * 2 > j->prereserved.remaining)
+ if (j->prereserved.reserved * 2 > j->prereserved.remaining) {
+ seq_to_flush = max(seq_to_flush, journal_last_seq(j));
min_nr = 1;
+ }
journal_flush_pins(j, seq_to_flush, min_nr);
- if (!test_bit(BCH_FS_RO, &c->flags))
+ if (!bch2_journal_error(j))
queue_delayed_work(c->journal_reclaim_wq, &j->reclaim_work,
msecs_to_jiffies(j->reclaim_delay_ms));
}