.. | .. |
---|
673 | 673 | es->s_max_mnt_count = cpu_to_le16(EXT2_DFL_MAX_MNT_COUNT); |
---|
674 | 674 | le16_add_cpu(&es->s_mnt_count, 1); |
---|
675 | 675 | if (test_opt (sb, DEBUG)) |
---|
676 | | - ext2_msg(sb, KERN_INFO, "%s, %s, bs=%lu, fs=%lu, gc=%lu, " |
---|
| 676 | + ext2_msg(sb, KERN_INFO, "%s, %s, bs=%lu, gc=%lu, " |
---|
677 | 677 | "bpg=%lu, ipg=%lu, mo=%04lx]", |
---|
678 | 678 | EXT2FS_VERSION, EXT2FS_DATE, sb->s_blocksize, |
---|
679 | | - sbi->s_frag_size, |
---|
680 | 679 | sbi->s_groups_count, |
---|
681 | 680 | EXT2_BLOCKS_PER_GROUP(sb), |
---|
682 | 681 | EXT2_INODES_PER_GROUP(sb), |
---|
.. | .. |
---|
950 | 949 | goto failed_mount; |
---|
951 | 950 | } |
---|
952 | 951 | |
---|
| 952 | + if (le32_to_cpu(es->s_log_block_size) > |
---|
| 953 | + (EXT2_MAX_BLOCK_LOG_SIZE - BLOCK_SIZE_BITS)) { |
---|
| 954 | + ext2_msg(sb, KERN_ERR, |
---|
| 955 | + "Invalid log block size: %u", |
---|
| 956 | + le32_to_cpu(es->s_log_block_size)); |
---|
| 957 | + goto failed_mount; |
---|
| 958 | + } |
---|
953 | 959 | blocksize = BLOCK_SIZE << le32_to_cpu(sbi->s_es->s_log_block_size); |
---|
954 | 960 | |
---|
955 | 961 | if (test_opt(sb, DAX)) { |
---|
.. | .. |
---|
1007 | 1013 | } |
---|
1008 | 1014 | } |
---|
1009 | 1015 | |
---|
1010 | | - sbi->s_frag_size = EXT2_MIN_FRAG_SIZE << |
---|
1011 | | - le32_to_cpu(es->s_log_frag_size); |
---|
1012 | | - if (sbi->s_frag_size == 0) |
---|
1013 | | - goto cantfind_ext2; |
---|
1014 | | - sbi->s_frags_per_block = sb->s_blocksize / sbi->s_frag_size; |
---|
1015 | | - |
---|
1016 | 1016 | sbi->s_blocks_per_group = le32_to_cpu(es->s_blocks_per_group); |
---|
1017 | | - sbi->s_frags_per_group = le32_to_cpu(es->s_frags_per_group); |
---|
1018 | 1017 | sbi->s_inodes_per_group = le32_to_cpu(es->s_inodes_per_group); |
---|
1019 | 1018 | |
---|
1020 | 1019 | sbi->s_inodes_per_block = sb->s_blocksize / EXT2_INODE_SIZE(sb); |
---|
.. | .. |
---|
1040 | 1039 | goto failed_mount; |
---|
1041 | 1040 | } |
---|
1042 | 1041 | |
---|
1043 | | - if (sb->s_blocksize != sbi->s_frag_size) { |
---|
| 1042 | + if (es->s_log_frag_size != es->s_log_block_size) { |
---|
1044 | 1043 | ext2_msg(sb, KERN_ERR, |
---|
1045 | | - "error: fragsize %lu != blocksize %lu" |
---|
1046 | | - "(not supported yet)", |
---|
1047 | | - sbi->s_frag_size, sb->s_blocksize); |
---|
| 1044 | + "error: fragsize log %u != blocksize log %u", |
---|
| 1045 | + le32_to_cpu(es->s_log_frag_size), sb->s_blocksize_bits); |
---|
1048 | 1046 | goto failed_mount; |
---|
1049 | 1047 | } |
---|
1050 | 1048 | |
---|
.. | .. |
---|
1052 | 1050 | ext2_msg(sb, KERN_ERR, |
---|
1053 | 1051 | "error: #blocks per group too big: %lu", |
---|
1054 | 1052 | sbi->s_blocks_per_group); |
---|
1055 | | - goto failed_mount; |
---|
1056 | | - } |
---|
1057 | | - if (sbi->s_frags_per_group > sb->s_blocksize * 8) { |
---|
1058 | | - ext2_msg(sb, KERN_ERR, |
---|
1059 | | - "error: #fragments per group too big: %lu", |
---|
1060 | | - sbi->s_frags_per_group); |
---|
1061 | 1053 | goto failed_mount; |
---|
1062 | 1054 | } |
---|
1063 | 1055 | if (sbi->s_inodes_per_group < sbi->s_inodes_per_block || |
---|