@@ -4641,6 +4641,8 @@ static int ext4_check_feature_compatibility(struct super_block *sb,
4641
4641
struct ext4_super_block * es ,
4642
4642
int silent )
4643
4643
{
4644
+ struct ext4_sb_info * sbi = EXT4_SB (sb );
4645
+
4644
4646
if (le32_to_cpu (es -> s_rev_level ) == EXT4_GOOD_OLD_REV &&
4645
4647
(ext4_has_compat_features (sb ) ||
4646
4648
ext4_has_ro_compat_features (sb ) ||
@@ -4710,6 +4712,32 @@ static int ext4_check_feature_compatibility(struct super_block *sb,
4710
4712
if (!ext4_feature_set_ok (sb , (sb_rdonly (sb ))))
4711
4713
return - EINVAL ;
4712
4714
4715
+ if (sbi -> s_daxdev ) {
4716
+ if (sb -> s_blocksize == PAGE_SIZE )
4717
+ set_bit (EXT4_FLAGS_BDEV_IS_DAX , & sbi -> s_ext4_flags );
4718
+ else
4719
+ ext4_msg (sb , KERN_ERR , "unsupported blocksize for DAX\n" );
4720
+ }
4721
+
4722
+ if (sbi -> s_mount_opt & EXT4_MOUNT_DAX_ALWAYS ) {
4723
+ if (ext4_has_feature_inline_data (sb )) {
4724
+ ext4_msg (sb , KERN_ERR , "Cannot use DAX on a filesystem"
4725
+ " that may contain inline data" );
4726
+ return - EINVAL ;
4727
+ }
4728
+ if (!test_bit (EXT4_FLAGS_BDEV_IS_DAX , & sbi -> s_ext4_flags )) {
4729
+ ext4_msg (sb , KERN_ERR ,
4730
+ "DAX unsupported by block device." );
4731
+ return - EINVAL ;
4732
+ }
4733
+ }
4734
+
4735
+ if (ext4_has_feature_encrypt (sb ) && es -> s_encryption_level ) {
4736
+ ext4_msg (sb , KERN_ERR , "Unsupported encryption level %d" ,
4737
+ es -> s_encryption_level );
4738
+ return - EINVAL ;
4739
+ }
4740
+
4713
4741
return 0 ;
4714
4742
}
4715
4743
@@ -5242,32 +5270,6 @@ static int __ext4_fill_super(struct fs_context *fc, struct super_block *sb)
5242
5270
if (ext4_check_feature_compatibility (sb , es , silent ))
5243
5271
goto failed_mount ;
5244
5272
5245
- if (sbi -> s_daxdev ) {
5246
- if (sb -> s_blocksize == PAGE_SIZE )
5247
- set_bit (EXT4_FLAGS_BDEV_IS_DAX , & sbi -> s_ext4_flags );
5248
- else
5249
- ext4_msg (sb , KERN_ERR , "unsupported blocksize for DAX\n" );
5250
- }
5251
-
5252
- if (sbi -> s_mount_opt & EXT4_MOUNT_DAX_ALWAYS ) {
5253
- if (ext4_has_feature_inline_data (sb )) {
5254
- ext4_msg (sb , KERN_ERR , "Cannot use DAX on a filesystem"
5255
- " that may contain inline data" );
5256
- goto failed_mount ;
5257
- }
5258
- if (!test_bit (EXT4_FLAGS_BDEV_IS_DAX , & sbi -> s_ext4_flags )) {
5259
- ext4_msg (sb , KERN_ERR ,
5260
- "DAX unsupported by block device." );
5261
- goto failed_mount ;
5262
- }
5263
- }
5264
-
5265
- if (ext4_has_feature_encrypt (sb ) && es -> s_encryption_level ) {
5266
- ext4_msg (sb , KERN_ERR , "Unsupported encryption level %d" ,
5267
- es -> s_encryption_level );
5268
- goto failed_mount ;
5269
- }
5270
-
5271
5273
if (ext4_block_group_meta_init (sb , silent ))
5272
5274
goto failed_mount ;
5273
5275
0 commit comments