summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2018-05-03 20:50:52 -0400
committerKent Overstreet <kent.overstreet@gmail.com>2018-05-22 00:44:18 -0400
commitc921efbe990df022e529d0e4f77f2fde7ad1d074 (patch)
tree77f67c8d0993a2f7bac1d158769569226b8d1c75
parent15b02636f613d3fec076bc645ad9662b583f0876 (diff)
bcachefs: fix for new assertion
-rw-r--r--fs/bcachefs/journal_io.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/fs/bcachefs/journal_io.c b/fs/bcachefs/journal_io.c
index e2e5c8ab52c5..bf8b10c6e898 100644
--- a/fs/bcachefs/journal_io.c
+++ b/fs/bcachefs/journal_io.c
@@ -1236,6 +1236,7 @@ static void journal_write_done(struct closure *cl)
struct journal_buf *w = journal_prev_buf(j);
struct bch_devs_list devs =
bch2_extent_devs(bkey_i_to_s_c_extent(&w->key));
+ u64 seq = le64_to_cpu(w->data->seq);
if (!devs.nr) {
bch_err(c, "unable to write journal to sufficient devices");
@@ -1248,9 +1249,9 @@ out:
__bch2_time_stats_update(j->write_time, j->write_start_time);
spin_lock(&j->lock);
- j->last_seq_ondisk = le64_to_cpu(w->data->last_seq);
-
- journal_seq_pin(j, le64_to_cpu(w->data->seq))->devs = devs;
+ j->last_seq_ondisk = seq;
+ if (seq >= j->pin.front)
+ journal_seq_pin(j, seq)->devs = devs;
/*
* Updating last_seq_ondisk may let bch2_journal_reclaim_work() discard