@@ -577,8 +577,9 @@ u64 bch2_recovery_passes_from_stable(u64 v)
577
577
578
578
static bool check_version_upgrade (struct bch_fs * c )
579
579
{
580
- unsigned latest_compatible = bch2_latest_compatible_version (c -> sb .version );
581
580
unsigned latest_version = bcachefs_metadata_version_current ;
581
+ unsigned latest_compatible = min (latest_version ,
582
+ bch2_latest_compatible_version (c -> sb .version ));
582
583
unsigned old_version = c -> sb .version_upgrade_complete ?: c -> sb .version ;
583
584
unsigned new_version = 0 ;
584
585
@@ -597,7 +598,7 @@ static bool check_version_upgrade(struct bch_fs *c)
597
598
new_version = latest_version ;
598
599
break ;
599
600
case BCH_VERSION_UPGRADE_none :
600
- new_version = old_version ;
601
+ new_version = min ( old_version , latest_version ) ;
601
602
break ;
602
603
}
603
604
}
@@ -774,7 +775,7 @@ int bch2_fs_recovery(struct bch_fs *c)
774
775
goto err ;
775
776
}
776
777
777
- if (!( c -> opts .nochanges && c -> opts . norecovery ) ) {
778
+ if (!c -> opts .nochanges ) {
778
779
mutex_lock (& c -> sb_lock );
779
780
bool write_sb = false;
780
781
@@ -804,15 +805,15 @@ int bch2_fs_recovery(struct bch_fs *c)
804
805
if (bch2_check_version_downgrade (c )) {
805
806
struct printbuf buf = PRINTBUF ;
806
807
807
- prt_str (& buf , "Version downgrade required:\n " );
808
+ prt_str (& buf , "Version downgrade required:" );
808
809
809
810
__le64 passes = ext -> recovery_passes_required [0 ];
810
811
bch2_sb_set_downgrade (c ,
811
812
BCH_VERSION_MINOR (bcachefs_metadata_version_current ),
812
813
BCH_VERSION_MINOR (c -> sb .version ));
813
814
passes = ext -> recovery_passes_required [0 ] & ~passes ;
814
815
if (passes ) {
815
- prt_str (& buf , " running recovery passes: " );
816
+ prt_str (& buf , "\n running recovery passes: " );
816
817
prt_bitflags (& buf , bch2_recovery_passes ,
817
818
bch2_recovery_passes_from_stable (le64_to_cpu (passes )));
818
819
}
0 commit comments