diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2022-04-05 20:44:18 +0300 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2023-10-23 00:09:30 +0300 |
commit | e1effd42a1cb40048002f594c12e823b5e33ed5d (patch) | |
tree | 24af42ba8fc1021eebfceb6896c14132d6edb635 /fs/bcachefs/super.c | |
parent | afb6f7f61ba38f4d4d96e8d1bf5fb9e7809e6c10 (diff) | |
download | linux-e1effd42a1cb40048002f594c12e823b5e33ed5d.tar.xz |
bcachefs: More improvements for alloc info checks
- Move checks for whether the device & bucket are valid from the
.key_invalid method to bch2_check_alloc_key(). This is because
.key_invalid() is called on keys that may no longer exist (post
journal replay), which is a problem when removing/resizing devices.
- We weren't checking the need_discard btree to ensure that every set
bucket has a corresponding alloc key. This refactors the code for
checking the freespace btree, so that it now checks both.
Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
Diffstat (limited to 'fs/bcachefs/super.c')
-rw-r--r-- | fs/bcachefs/super.c | 9 |
1 files changed, 0 insertions, 9 deletions
diff --git a/fs/bcachefs/super.c b/fs/bcachefs/super.c index 037923bca742..3183f49a488f 100644 --- a/fs/bcachefs/super.c +++ b/fs/bcachefs/super.c @@ -1474,15 +1474,6 @@ int bch2_dev_remove(struct bch_fs *c, struct bch_dev *ca, int flags) goto err; } - /* - * must flush all existing journal entries, they might have - * (overwritten) keys that point to the device we're removing: - */ - bch2_journal_flush_all_pins(&c->journal); - /* - * hack to ensure bch2_replicas_gc2() clears out entries to this device - */ - bch2_journal_meta(&c->journal); ret = bch2_journal_error(&c->journal); if (ret) { bch_err(ca, "Remove failed, journal error"); |