The patch titled txt/percpu-counter-data-type-changes-to-suppport-fix fix has been removed from the -mm tree. Its filename is percpu-counter-data-type-changes-to-suppport-fix-fix.patch This patch was probably dropped from -mm because it has now been merged into a subsystem tree or into Linus's tree, or because it was folded into its parent patch in the -mm tree. ------------------------------------------------------ Subject: txt/percpu-counter-data-type-changes-to-suppport-fix fix From: Mingming Cao <cmm@xxxxxxxxxx> Since we had a unclean reboot, so the failing path is like this: ext3_fill_super() ->ext3_orphan_cleanup() ->iput() .... ->ext3_free_blocks() ->percpu_counter_mod() oops, the counter hasn't initialized yet. The percpu counter initialization need to be done after the block group descriptors are being loaded, but should be done before calling ext3_orphan_inode and iput(). Signed-off-by: Mingming Cao <cmm@xxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxx> --- fs/ext2/super.c | 13 +++++++------ fs/ext3/super.c | 15 ++++++++------- 2 files changed, 15 insertions(+), 13 deletions(-) diff -puN fs/ext2/super.c~percpu-counter-data-type-changes-to-suppport-fix-fix fs/ext2/super.c --- devel/fs/ext2/super.c~percpu-counter-data-type-changes-to-suppport-fix-fix 2006-04-28 23:26:14.000000000 -0700 +++ devel-akpm/fs/ext2/super.c 2006-04-28 23:26:14.000000000 -0700 @@ -860,6 +860,13 @@ static int ext2_fill_super(struct super_ sbi->s_gdb_count = db_count; get_random_bytes(&sbi->s_next_generation, sizeof(u32)); spin_lock_init(&sbi->s_next_gen_lock); + + percpu_counter_init(&sbi->s_freeblocks_counter, + ext2_count_free_blocks(sb)); + percpu_counter_init(&sbi->s_freeinodes_counter, + ext2_count_free_inodes(sb)); + percpu_counter_init(&sbi->s_dirs_counter, + ext2_count_dirs(sb)); /* * set up enough so that it can read an inode */ @@ -883,12 +890,6 @@ static int ext2_fill_super(struct super_ ext2_warning(sb, __FUNCTION__, "mounting ext3 filesystem as ext2"); ext2_setup_super (sb, es, sb->s_flags & MS_RDONLY); - percpu_counter_init(&sbi->s_freeblocks_counter, - ext2_count_free_blocks(sb)); - percpu_counter_init(&sbi->s_freeinodes_counter, - ext2_count_free_inodes(sb)); - percpu_counter_init(&sbi->s_dirs_counter, - ext2_count_dirs(sb)); return 0; cantfind_ext2: diff -puN fs/ext3/super.c~percpu-counter-data-type-changes-to-suppport-fix-fix fs/ext3/super.c --- devel/fs/ext3/super.c~percpu-counter-data-type-changes-to-suppport-fix-fix 2006-04-28 23:26:14.000000000 -0700 +++ devel-akpm/fs/ext3/super.c 2006-04-28 23:26:14.000000000 -0700 @@ -1599,6 +1599,14 @@ static int ext3_fill_super (struct super sbi->s_gdb_count = db_count; get_random_bytes(&sbi->s_next_generation, sizeof(u32)); spin_lock_init(&sbi->s_next_gen_lock); + + percpu_counter_init(&sbi->s_freeblocks_counter, + ext3_count_free_blocks(sb)); + percpu_counter_init(&sbi->s_freeinodes_counter, + ext3_count_free_inodes(sb)); + percpu_counter_init(&sbi->s_dirs_counter, + ext3_count_dirs(sb)); + /* per fileystem reservation list head & lock */ spin_lock_init(&sbi->s_rsv_window_lock); sbi->s_rsv_window_root = RB_ROOT; @@ -1721,13 +1729,6 @@ static int ext3_fill_super (struct super test_opt(sb,DATA_FLAGS) == EXT3_MOUNT_ORDERED_DATA ? "ordered": "writeback"); - percpu_counter_init(&sbi->s_freeblocks_counter, - ext3_count_free_blocks(sb)); - percpu_counter_init(&sbi->s_freeinodes_counter, - ext3_count_free_inodes(sb)); - percpu_counter_init(&sbi->s_dirs_counter, - ext3_count_dirs(sb)); - lock_kernel(); return 0; _ Patches currently in -mm which might be from cmm@xxxxxxxxxx are percpu-counter-data-type-changes-to-suppport.patch percpu-counter-data-type-changes-to-suppport-fix-fix.patch percpu-counter-data-type-changes-to-suppport-fix-fix-fix.patch avoid-disk-sector_t-overflow-for-2tb-ext3-filesystem.patch - To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html