From: Kent Overstreet Date: Thu, 24 Apr 2025 13:09:56 +0000 (-0400) Subject: bcachefs: bch2_btree_lost_data() now handles snapshots tree X-Git-Tag: v6.16-rc1~211^2~130 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=3be132f93cff2586be482cb81807ff83899f572e;p=thirdparty%2Fkernel%2Flinux.git bcachefs: bch2_btree_lost_data() now handles snapshots tree We have a consolidated places for "this btree lost data, run this repair", so use it. Signed-off-by: Kent Overstreet --- diff --git a/fs/bcachefs/recovery.c b/fs/bcachefs/recovery.c index 2a8bcb9b1dd2b..8f45d9e3a47e5 100644 --- a/fs/bcachefs/recovery.c +++ b/fs/bcachefs/recovery.c @@ -95,6 +95,10 @@ int bch2_btree_lost_data(struct bch_fs *c, enum btree_id btree) case BTREE_ID_accounting: ret = bch2_run_explicit_recovery_pass_persistent_locked(c, BCH_RECOVERY_PASS_check_allocations) ?: ret; goto out; + case BTREE_ID_snapshots: + ret = bch2_run_explicit_recovery_pass_persistent_locked(c, BCH_RECOVERY_PASS_reconstruct_snapshots) ?: ret; + ret = bch2_run_explicit_recovery_pass_persistent_locked(c, BCH_RECOVERY_PASS_scan_for_btree_nodes) ?: ret; + goto out; default: ret = bch2_run_explicit_recovery_pass_persistent_locked(c, BCH_RECOVERY_PASS_scan_for_btree_nodes) ?: ret; goto out; diff --git a/fs/bcachefs/snapshot.c b/fs/bcachefs/snapshot.c index 14ea09ccee37b..94cf60f76b642 100644 --- a/fs/bcachefs/snapshot.c +++ b/fs/bcachefs/snapshot.c @@ -1743,10 +1743,6 @@ int bch2_snapshots_read(struct bch_fs *c) BUG_ON(!test_bit(BCH_FS_new_fs, &c->flags) && test_bit(BCH_FS_may_go_rw, &c->flags)); - if (bch2_err_matches(ret, EIO) || - (c->sb.btrees_lost_data & BIT_ULL(BTREE_ID_snapshots))) - ret = bch2_run_explicit_recovery_pass_persistent(c, BCH_RECOVERY_PASS_reconstruct_snapshots); - return ret; }