diff options
| author | Kent Overstreet <kent.overstreet@linux.dev> | 2023-11-27 00:53:46 -0500 |
|---|---|---|
| committer | Kent Overstreet <kent.overstreet@linux.dev> | 2023-11-28 22:58:22 -0500 |
| commit | ef0beeb8dd343a57cf8ad4967b508b8e7452f347 (patch) | |
| tree | 24a9ccb7ad81b53b948a71cc7a4205376a9c7af2 | |
| parent | bcachefs: -EROFS doesn't count as move_extent_start_fail (diff) | |
| download | linux-ef0beeb8dd343a57cf8ad4967b508b8e7452f347.tar.gz linux-ef0beeb8dd343a57cf8ad4967b508b8e7452f347.zip | |
bcachefs: move journal seq assertion
journal_cur_seq() can legitimately be used outside of the journal lock,
where this assert can race
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
| -rw-r--r-- | fs/bcachefs/journal.c | 2 | ||||
| -rw-r--r-- | fs/bcachefs/journal.h | 4 |
2 files changed, 3 insertions, 3 deletions
diff --git a/fs/bcachefs/journal.c b/fs/bcachefs/journal.c index 23a9b7845d11..489b34046e78 100644 --- a/fs/bcachefs/journal.c +++ b/fs/bcachefs/journal.c @@ -321,6 +321,8 @@ static int journal_entry_open(struct journal *j) atomic64_inc(&j->seq); journal_pin_list_init(fifo_push_ref(&j->pin), 1); + BUG_ON(j->pin.back - 1 != atomic64_read(&j->seq)); + BUG_ON(j->buf + (journal_cur_seq(j) & JOURNAL_BUF_MASK) != buf); bkey_extent_init(&buf->key); diff --git a/fs/bcachefs/journal.h b/fs/bcachefs/journal.h index c85d01cf4948..4c513fca5ef2 100644 --- a/fs/bcachefs/journal.h +++ b/fs/bcachefs/journal.h @@ -136,9 +136,7 @@ static inline u64 journal_last_seq(struct journal *j) static inline u64 journal_cur_seq(struct journal *j) { - EBUG_ON(j->pin.back - 1 != atomic64_read(&j->seq)); - - return j->pin.back - 1; + return atomic64_read(&j->seq); } static inline u64 journal_last_unwritten_seq(struct journal *j) |
