@@ -593,16 +593,15 @@ static int bch2_check_fix_ptrs(struct btree_trans *trans, enum btree_id btree_id
593593 struct bucket * g = PTR_GC_BUCKET (ca , & p .ptr );
594594 enum bch_data_type data_type = bch2_bkey_ptr_data_type (* k , & entry_c -> ptr );
595595
596- if (!g -> gen_valid &&
597- (c -> opts .reconstruct_alloc ||
598- fsck_err (c , ptr_to_missing_alloc_key ,
599- "bucket %u:%zu data type %s ptr gen %u missing in alloc btree\n"
600- "while marking %s" ,
601- p .ptr .dev , PTR_BUCKET_NR (ca , & p .ptr ),
602- bch2_data_type_str (ptr_data_type (k -> k , & p .ptr )),
603- p .ptr .gen ,
604- (printbuf_reset (& buf ),
605- bch2_bkey_val_to_text (& buf , c , * k ), buf .buf )))) {
596+ if (fsck_err_on (!g -> gen_valid ,
597+ c , ptr_to_missing_alloc_key ,
598+ "bucket %u:%zu data type %s ptr gen %u missing in alloc btree\n"
599+ "while marking %s" ,
600+ p .ptr .dev , PTR_BUCKET_NR (ca , & p .ptr ),
601+ bch2_data_type_str (ptr_data_type (k -> k , & p .ptr )),
602+ p .ptr .gen ,
603+ (printbuf_reset (& buf ),
604+ bch2_bkey_val_to_text (& buf , c , * k ), buf .buf ))) {
606605 if (!p .ptr .cached ) {
607606 g -> gen_valid = true;
608607 g -> gen = p .ptr .gen ;
@@ -611,16 +610,15 @@ static int bch2_check_fix_ptrs(struct btree_trans *trans, enum btree_id btree_id
611610 }
612611 }
613612
614- if (gen_cmp (p .ptr .gen , g -> gen ) > 0 &&
615- (c -> opts .reconstruct_alloc ||
616- fsck_err (c , ptr_gen_newer_than_bucket_gen ,
617- "bucket %u:%zu data type %s ptr gen in the future: %u > %u\n"
618- "while marking %s" ,
619- p .ptr .dev , PTR_BUCKET_NR (ca , & p .ptr ),
620- bch2_data_type_str (ptr_data_type (k -> k , & p .ptr )),
621- p .ptr .gen , g -> gen ,
622- (printbuf_reset (& buf ),
623- bch2_bkey_val_to_text (& buf , c , * k ), buf .buf )))) {
613+ if (fsck_err_on (gen_cmp (p .ptr .gen , g -> gen ) > 0 ,
614+ c , ptr_gen_newer_than_bucket_gen ,
615+ "bucket %u:%zu data type %s ptr gen in the future: %u > %u\n"
616+ "while marking %s" ,
617+ p .ptr .dev , PTR_BUCKET_NR (ca , & p .ptr ),
618+ bch2_data_type_str (ptr_data_type (k -> k , & p .ptr )),
619+ p .ptr .gen , g -> gen ,
620+ (printbuf_reset (& buf ),
621+ bch2_bkey_val_to_text (& buf , c , * k ), buf .buf ))) {
624622 if (!p .ptr .cached ) {
625623 g -> gen_valid = true;
626624 g -> gen = p .ptr .gen ;
@@ -633,28 +631,26 @@ static int bch2_check_fix_ptrs(struct btree_trans *trans, enum btree_id btree_id
633631 }
634632 }
635633
636- if (gen_cmp (g -> gen , p .ptr .gen ) > BUCKET_GC_GEN_MAX &&
637- (c -> opts .reconstruct_alloc ||
638- fsck_err (c , ptr_gen_newer_than_bucket_gen ,
639- "bucket %u:%zu gen %u data type %s: ptr gen %u too stale\n"
640- "while marking %s" ,
641- p .ptr .dev , PTR_BUCKET_NR (ca , & p .ptr ), g -> gen ,
642- bch2_data_type_str (ptr_data_type (k -> k , & p .ptr )),
643- p .ptr .gen ,
644- (printbuf_reset (& buf ),
645- bch2_bkey_val_to_text (& buf , c , * k ), buf .buf ))))
634+ if (fsck_err_on (gen_cmp (g -> gen , p .ptr .gen ) > BUCKET_GC_GEN_MAX ,
635+ c , ptr_gen_newer_than_bucket_gen ,
636+ "bucket %u:%zu gen %u data type %s: ptr gen %u too stale\n"
637+ "while marking %s" ,
638+ p .ptr .dev , PTR_BUCKET_NR (ca , & p .ptr ), g -> gen ,
639+ bch2_data_type_str (ptr_data_type (k -> k , & p .ptr )),
640+ p .ptr .gen ,
641+ (printbuf_reset (& buf ),
642+ bch2_bkey_val_to_text (& buf , c , * k ), buf .buf )))
646643 do_update = true;
647644
648- if (!p .ptr .cached && gen_cmp (p .ptr .gen , g -> gen ) < 0 &&
649- (c -> opts .reconstruct_alloc ||
650- fsck_err (c , stale_dirty_ptr ,
651- "bucket %u:%zu data type %s stale dirty ptr: %u < %u\n"
652- "while marking %s" ,
653- p .ptr .dev , PTR_BUCKET_NR (ca , & p .ptr ),
654- bch2_data_type_str (ptr_data_type (k -> k , & p .ptr )),
655- p .ptr .gen , g -> gen ,
656- (printbuf_reset (& buf ),
657- bch2_bkey_val_to_text (& buf , c , * k ), buf .buf ))))
645+ if (fsck_err_on (!p .ptr .cached && gen_cmp (p .ptr .gen , g -> gen ) < 0 ,
646+ c , stale_dirty_ptr ,
647+ "bucket %u:%zu data type %s stale dirty ptr: %u < %u\n"
648+ "while marking %s" ,
649+ p .ptr .dev , PTR_BUCKET_NR (ca , & p .ptr ),
650+ bch2_data_type_str (ptr_data_type (k -> k , & p .ptr )),
651+ p .ptr .gen , g -> gen ,
652+ (printbuf_reset (& buf ),
653+ bch2_bkey_val_to_text (& buf , c , * k ), buf .buf )))
658654 do_update = true;
659655
660656 if (data_type != BCH_DATA_btree && p .ptr .gen != g -> gen )
@@ -1411,8 +1407,7 @@ static int bch2_alloc_write_key(struct btree_trans *trans,
14111407 if (gen_after (old -> gen , gc .gen ))
14121408 return 0 ;
14131409
1414- if (c -> opts .reconstruct_alloc ||
1415- fsck_err_on (new .data_type != gc .data_type , c ,
1410+ if (fsck_err_on (new .data_type != gc .data_type , c ,
14161411 alloc_key_data_type_wrong ,
14171412 "bucket %llu:%llu gen %u has wrong data_type"
14181413 ": got %s, should be %s" ,
@@ -1423,8 +1418,7 @@ static int bch2_alloc_write_key(struct btree_trans *trans,
14231418 new .data_type = gc .data_type ;
14241419
14251420#define copy_bucket_field (_errtype , _f ) \
1426- if (c->opts.reconstruct_alloc || \
1427- fsck_err_on(new._f != gc._f, c, _errtype, \
1421+ if (fsck_err_on(new._f != gc._f, c, _errtype, \
14281422 "bucket %llu:%llu gen %u data type %s has wrong " #_f \
14291423 ": got %u, should be %u", \
14301424 iter->pos.inode, iter->pos.offset, \
0 commit comments