for (i = 0; i <= 13; i++)
seq_printf(seq, " %-5u", i <= sb->s_blocksize_bits + 1 ?
sg.info.bb_counters[i] : 0);
-@@ -3354,23 +3365,68 @@
+@@ -3354,23 +3365,72 @@
}
/*
+{
+ unsigned short max = EXT4_BLOCKS_PER_GROUP(sb);
+ unsigned short i, first, free = 0;
++ unsigned short free_in_gdp = ext4_free_blks_count(sb, gdp);
++
++ if (free_in_gdp == 0 && gdp->bg_flags & cpu_to_le16(EXT4_BG_BLOCK_UNINIT))
++ return 0;
+
+ i = mb_find_next_zero_bit(bitmap, max, 0);
+
+ i = mb_find_next_zero_bit(bitmap, max, i);
+ }
+
-+ if (free != ext4_free_blks_count(sb, gdp)) {
++ if (free != free_in_gdp) {
+ ext4_error(sb, "on-disk bitmap for group %d"
+ "corrupted: %u blocks free in bitmap, %u - in gd\n",
-+ group, free, ext4_free_blks_count(sb, gdp));
++ group, free, free_in_gdp);
+ return -EIO;
+ }
+ return 0;
@@ -3382,9 +3401,10 @@ int ext4_mb_check_ondisk_bitmap(struct super_block *sb, void *bitmap,
}
- if (free != ext4_free_blks_count(sb, gdp)) {
+ if (free != free_in_gdp) {
- ext4_error(sb, "on-disk bitmap for group %d"
- "corrupted: %u blocks free in bitmap, %u - in gd\n",
-- group, free, ext4_free_blks_count(sb, gdp));
+- group, free, free_in_gdp);
+ ext4_corrupted_block_group(sb, group,
+ EXT4_GROUP_INFO_BBITMAP_CORRUPT,
+ "on-disk bitmap for group %d corrupted: %u blocks free in bitmap, %u - in gd\n",
-+ group, free, ext4_free_blks_count(sb, gdp));
++ group, free, free_in_gdp);
return -EIO;
}
return 0;
@@ -3598,9 +3607,11 @@ int ext4_mb_check_ondisk_bitmap(struct s
}
- if (free != ext4_free_group_clusters(sb, gdp)) {
+ if (free != free_in_gdp) {
- ext4_error(sb, "on-disk bitmap for group %d"
- "corrupted: %u blocks free in bitmap, %u - in gd\n",
-- group, free, ext4_free_group_clusters(sb, gdp));
+- group, free, free_in_gdp);
+ ext4_corrupted_block_group(sb, group,
+ EXT4_GROUP_INFO_BBITMAP_CORRUPT,
+ "on-disk bitmap for group %d corrupted: %u blocks free in bitmap, %u - in gd\n",
+ group, free,
-+ ext4_free_group_clusters(sb, gdp));
++ free_in_gdp);
return -EIO;
}
return 0;
@@ -3599,9 +3608,11 @@ int ext4_mb_check_ondisk_bitmap(struct super_block *sb, void *bitmap,
}
- if (free != ext4_free_group_clusters(sb, gdp)) {
+ if (free != free_in_gdp) {
- ext4_error(sb, "on-disk bitmap for group %d"
- "corrupted: %u blocks free in bitmap, %u - in gd\n",
-- group, free, ext4_free_group_clusters(sb, gdp));
+- group, free, free_in_gdp);
+ ext4_corrupted_block_group(sb, group,
+ EXT4_GROUP_INFO_BBITMAP_CORRUPT,
+ "on-disk bitmap for group %d corrupted: %u blocks free in bitmap, %u - in gd\n",
+ group, free,
-+ ext4_free_group_clusters(sb, gdp));
++ free_in_gdp);
return -EIO;
}
return 0;
for (i = 0; i <= 13; i++)
seq_printf(seq, " %-5u", i <= sb->s_blocksize_bits + 1 ?
sg.info.bb_counters[i] : 0);
-@@ -3507,22 +3517,67 @@ static void ext4_mb_generate_from_freeli
+@@ -3507,22 +3517,71 @@ static void ext4_mb_generate_from_freeli
}
/*
+{
+ unsigned short max = EXT4_CLUSTERS_PER_GROUP(sb);
+ unsigned short i, first, free = 0;
++ unsigned short free_in_gdp = ext4_free_group_clusters(sb, gdp);
++
++ if (free_in_gdp == 0 && gdp->bg_flags & cpu_to_le16(EXT4_BG_BLOCK_UNINIT))
++ return 0;
+
+ i = mb_find_next_zero_bit(bitmap, max, 0);
+
+ i = mb_find_next_zero_bit(bitmap, max, i);
+ }
+
-+ if (free != ext4_free_group_clusters(sb, gdp)) {
++ if (free != free_in_gdp) {
+ ext4_error(sb, "on-disk bitmap for group %d"
+ "corrupted: %u blocks free in bitmap, %u - in gd\n",
-+ group, free, ext4_free_group_clusters(sb, gdp));
++ group, free, free_in_gdp);
+ return -EIO;
+ }
+ return 0;
@@ -3458,9 +3471,11 @@ int ext4_mb_check_ondisk_bitmap(struct super_block *sb, void *bitmap,
}
- if (free != ext4_free_blks_count(sb, gdp)) {
+ if (free != free_in_gdp) {
- ext4_error(sb, "on-disk bitmap for group %d"
- "corrupted: %u blocks free in bitmap, %u - in gd\n",
-- group, free, ext4_free_blks_count(sb, gdp));
+- group, free, free_in_gdp);
+ ext4_corrupted_block_group(sb, group,
+ EXT4_GROUP_INFO_BBITMAP_CORRUPT,
+ "on-disk bitmap for group %d corrupted: %u blocks free in bitmap, %u - in gd\n",
+ group, free,
-+ ext4_free_blks_count(sb, gdp));
++ free_in_gdp);
return -EIO;
}
return 0;
for (i = 0; i <= 13; i++)
seq_printf(seq, " %-5u", i <= sb->s_blocksize_bits + 1 ?
sg.info.bb_counters[i] : 0);
-@@ -3417,23 +3434,68 @@ static void ext4_mb_generate_from_freeli
+@@ -3417,23 +3434,72 @@ static void ext4_mb_generate_from_freeli
}
/*
+{
+ unsigned short max = EXT4_BLOCKS_PER_GROUP(sb);
+ unsigned short i, first, free = 0;
++ unsigned short free_in_gdp = ext4_free_blks_count(sb, gdp);
++
++ if (free_in_gdp == 0 && gdp->bg_flags & cpu_to_le16(EXT4_BG_BLOCK_UNINIT))
++ return 0;
+
+ i = mb_find_next_zero_bit(bitmap, max, 0);
+
+ i = mb_find_next_zero_bit(bitmap, max, i);
+ }
+
-+ if (free != ext4_free_blks_count(sb, gdp)) {
++ if (free != free_in_gdp) {
+ ext4_error(sb, "on-disk bitmap for group %d"
+ "corrupted: %u blocks free in bitmap, %u - in gd\n",
-+ group, free, ext4_free_blks_count(sb, gdp));
++ group, free, free_in_gdp);
+ return -EIO;
+ }
+ return 0;
@@ -3599,9 +3608,11 @@ int ext4_mb_check_ondisk_bitmap(struct super_block *sb, void *bitmap,
}
- if (free != ext4_free_group_clusters(sb, gdp)) {
+ if (free != free_in_gdp) {
- ext4_error(sb, "on-disk bitmap for group %d"
- "corrupted: %u blocks free in bitmap, %u - in gd\n",
-- group, free, ext4_free_group_clusters(sb, gdp));
+- group, free, free_in_gdp);
+ ext4_corrupted_block_group(sb, group,
+ EXT4_GROUP_INFO_BBITMAP_CORRUPT,
+ "on-disk bitmap for group %d corrupted: %u blocks free in bitmap, %u - in gd\n",
+ group, free,
-+ ext4_free_group_clusters(sb, gdp));
++ free_in_gdp);
return -EIO;
}
return 0;
for (i = 0; i <= 13; i++)
seq_printf(seq, " %-5u", i <= sb->s_blocksize_bits + 1 ?
sg.info.bb_counters[i] : 0);
-@@ -3507,22 +3517,67 @@ static void ext4_mb_generate_from_freeli
+@@ -3507,22 +3517,71 @@ static void ext4_mb_generate_from_freeli
}
/*
+{
+ unsigned short max = EXT4_CLUSTERS_PER_GROUP(sb);
+ unsigned short i, first, free = 0;
++ unsigned short free_in_gdp = ext4_free_group_clusters(sb, gdp);
++
++ if (free_in_gdp == 0 && gdp->bg_flags & cpu_to_le16(EXT4_BG_BLOCK_UNINIT))
++ return 0;
+
+ i = mb_find_next_zero_bit(bitmap, max, 0);
+
+ i = mb_find_next_zero_bit(bitmap, max, i);
+ }
+
-+ if (free != ext4_free_group_clusters(sb, gdp)) {
++ if (free != free_in_gdp) {
+ ext4_error(sb, "on-disk bitmap for group %d"
+ "corrupted: %u blocks free in bitmap, %u - in gd\n",
-+ group, free, ext4_free_group_clusters(sb, gdp));
++ group, free, free_in_gdp);
+ return -EIO;
+ }
+ return 0;