summaryrefslogtreecommitdiff
path: root/fs/bcachefs/recovery.c
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2021-12-26 16:59:36 -0500
committerKent Overstreet <kent.overstreet@linux.dev>2023-10-22 17:09:20 -0400
commit04f0f77df2324e5a2c3d60df4acda7cbe464d38e (patch)
tree4bc4036c89fe190a0b67cbb19ff364aaa8ab24f4 /fs/bcachefs/recovery.c
parent8511632d44a5846f8edc387e90858ae208715574 (diff)
downloadlwn-04f0f77df2324e5a2c3d60df4acda7cbe464d38e.tar.gz
lwn-04f0f77df2324e5a2c3d60df4acda7cbe464d38e.zip
bcachefs: Delete some obsolete journal_seq_blacklist code
Since metadata version bcachefs_metadata_version_btree_ptr_sectors_written, we haven't needed the journal seq blacklist mechanism for ignoring blacklisted btree node writes - we now only need it for ignoring journal entries that were written after the newest flush journal entry, and then we only need to keep those blacklist entries around until journal replay is finished. That means we can delete the code for scanning btree nodes to GC journal_seq_blacklist entries. Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
Diffstat (limited to 'fs/bcachefs/recovery.c')
-rw-r--r--fs/bcachefs/recovery.c26
1 files changed, 11 insertions, 15 deletions
diff --git a/fs/bcachefs/recovery.c b/fs/bcachefs/recovery.c
index 118d536b4376..ffa8ab933a11 100644
--- a/fs/bcachefs/recovery.c
+++ b/fs/bcachefs/recovery.c
@@ -1162,16 +1162,6 @@ use_clean:
if (ret)
goto err;
- /*
- * After an unclean shutdown, skip then next few journal sequence
- * numbers as they may have been referenced by btree writes that
- * happened before their corresponding journal writes - those btree
- * writes need to be ignored, by skipping and blacklisting the next few
- * journal sequence numbers:
- */
- if (!c->sb.clean)
- journal_seq += 8;
-
if (blacklist_seq != journal_seq) {
ret = bch2_journal_seq_blacklist_add(c,
blacklist_seq, journal_seq);
@@ -1309,7 +1299,8 @@ use_clean:
}
if (!(c->sb.compat & (1ULL << BCH_COMPAT_extents_above_btree_updates_done)) ||
- !(c->sb.compat & (1ULL << BCH_COMPAT_bformat_overflow_done))) {
+ !(c->sb.compat & (1ULL << BCH_COMPAT_bformat_overflow_done)) ||
+ le16_to_cpu(c->sb.version_min) < bcachefs_metadata_version_btree_ptr_sectors_written) {
struct bch_move_stats stats;
bch_move_stats_init(&stats, "recovery");
@@ -1326,6 +1317,15 @@ use_clean:
}
mutex_lock(&c->sb_lock);
+ /*
+ * With journal replay done, we can clear the journal seq blacklist
+ * table:
+ */
+ BUG_ON(!test_bit(JOURNAL_REPLAY_DONE, &c->journal.flags));
+ BUG_ON(le16_to_cpu(c->sb.version_min) < bcachefs_metadata_version_btree_ptr_sectors_written);
+
+ bch2_sb_resize_journal_seq_blacklist(&c->disk_sb, 0);
+
if (c->opts.version_upgrade) {
c->disk_sb.sb->version = cpu_to_le16(bcachefs_metadata_version_current);
c->disk_sb.sb->features[0] |= cpu_to_le64(BCH_SB_FEATURES_ALL);
@@ -1349,10 +1349,6 @@ use_clean:
bch2_write_super(c);
mutex_unlock(&c->sb_lock);
- if (c->journal_seq_blacklist_table &&
- c->journal_seq_blacklist_table->nr > 128)
- queue_work(system_long_wq, &c->journal_seq_blacklist_gc_work);
-
ret = 0;
out:
set_bit(BCH_FS_FSCK_DONE, &c->flags);