ext3 no longer keeps the filesystem-wide free blocks counter and free inodes counter up to date all the time in the superblock. Because that requires fs-wide locking. These counters are only needed at runtime for the Orlov allocator heuristics, and we are now using a fuzzy per-cpu coutner for that. These counters are rather unnecessary: the same info is present in the file allocation maps and inode tables, the group descriptor blocks and the bitmaps. e2fsck will be changed to downgrade the seriousness of this inconsistency. The filesystem _will_ write these numbers out in the superblock on a clean unmount, based on the sum of the free block and inode counts in the group descriptors. fs/ext3/super.c | 20 ++------------------ 1 files changed, 2 insertions(+), 18 deletions(-) diff -puN fs/ext3/super.c~ext3-080-remove-block-inode-count-message fs/ext3/super.c --- 25/fs/ext3/super.c~ext3-080-remove-block-inode-count-message 2003-06-02 00:32:58.000000000 -0700 +++ 25-akpm/fs/ext3/super.c 2003-06-02 00:36:46.000000000 -0700 @@ -901,7 +901,6 @@ static int ext3_check_descriptors (struc struct ext3_sb_info *sbi = EXT3_SB(sb); unsigned long block = le32_to_cpu(sbi->s_es->s_first_data_block); struct ext3_group_desc * gdp = NULL; - unsigned long total_free; int desc_block = 0; int i; @@ -949,23 +948,8 @@ static int ext3_check_descriptors (struc gdp++; } - total_free = ext3_count_free_blocks(sb); - if (total_free != le32_to_cpu(EXT3_SB(sb)->s_es->s_free_blocks_count)) { - printk("EXT3-fs: invalid s_free_blocks_count %u (real %lu)\n", - le32_to_cpu(EXT3_SB(sb)->s_es->s_free_blocks_count), - total_free); - EXT3_SB(sb)->s_es->s_free_blocks_count = cpu_to_le32(total_free); - } - - total_free = ext3_count_free_inodes(sb); - if (total_free != le32_to_cpu(EXT3_SB(sb)->s_es->s_free_inodes_count)) { - printk("EXT3-fs: invalid s_free_inodes_count %u (real %lu)\n", - le32_to_cpu(EXT3_SB(sb)->s_es->s_free_inodes_count), - total_free); - EXT3_SB(sb)->s_es->s_free_inodes_count = cpu_to_le32(total_free); - } - - + sbi->s_es->s_free_blocks_count=cpu_to_le32(ext3_count_free_blocks(sb)); + sbi->s_es->s_free_inodes_count=cpu_to_le32(ext3_count_free_inodes(sb)); return 1; } _