| .. | .. |
|---|
| 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 || |
|---|