bcachefs: Fix "multiple types of data in same bucket" with ec
authorKent Overstreet <kent.overstreet@linux.dev>
Sun, 9 Oct 2022 05:08:51 +0000 (01:08 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:09:42 +0000 (17:09 -0400)
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/buckets.c

index f01b8171cb9255d401932a7e5cc3d7c9f797521c..4b041707cd54b9e1495adc668db6e0c3b79eab56 100644 (file)
@@ -687,6 +687,10 @@ static int check_bucket_ref(struct bch_fs *c,
        if (bucket_data_type == BCH_DATA_cached)
                bucket_data_type = BCH_DATA_user;
 
+       if ((bucket_data_type == BCH_DATA_stripe && ptr_data_type == BCH_DATA_user) ||
+           (bucket_data_type == BCH_DATA_user   && ptr_data_type == BCH_DATA_stripe))
+               bucket_data_type = ptr_data_type = BCH_DATA_stripe;
+
        if (gen_after(ptr->gen, b_gen)) {
                bch2_fsck_err(c, FSCK_CAN_IGNORE|FSCK_NEED_FSCK,
                        "bucket %u:%zu gen %u data type %s: ptr gen %u newer than bucket gen\n"