From 02d51bb9a7315eb569a160363058ca2cd140faa1 Mon Sep 17 00:00:00 2001 From: Brian Foster Date: Wed, 19 Apr 2023 11:47:03 -0400 Subject: [PATCH] bcachefs: remove bucket_gens btree keys on device removal If a device has keys in the bucket_gens btree associated with its buckets and is removed from a bcachefs volume, fsck will complain about the presence of keys associated with an invalid device index. A repair removes the associated keys and restores correctness. Update bch2_dev_remove_alloc() to remove device related keys at device removal time to avoid the problem. Signed-off-by: Brian Foster Signed-off-by: Kent Overstreet --- fs/bcachefs/super.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/fs/bcachefs/super.c b/fs/bcachefs/super.c index 265ffa9bfd4c..af6cc73d9356 100644 --- a/fs/bcachefs/super.c +++ b/fs/bcachefs/super.c @@ -1431,6 +1431,8 @@ static int bch2_dev_remove_alloc(struct bch_fs *c, struct bch_dev *ca) bch2_btree_delete_range(c, BTREE_ID_backpointers, start, end, BTREE_TRIGGER_NORUN, NULL) ?: bch2_btree_delete_range(c, BTREE_ID_alloc, start, end, + BTREE_TRIGGER_NORUN, NULL) ?: + bch2_btree_delete_range(c, BTREE_ID_bucket_gens, start, end, BTREE_TRIGGER_NORUN, NULL); if (ret) bch_err(c, "error removing dev alloc info: %s", bch2_err_str(ret));