android_kernel_google_msm/fs/ext4
johnny1_lin 3db674a036 ext4: protect group inode free counting with group lock
Patch from Ken that can solve fsstress failing issue
commit b9fa7bb8ff207eeb27d2e0ed45b8c3acf1a7af8c
Author: Tao Ma <boyu.mt@taobao.com>
Date:   Mon May 28 18:20:59 2012 -0400

    ext4: protect group inode free counting with group lock

    Now when we set the group inode free count, we don't have a proper
    group lock so that multiple threads may decrease the inode free
    count at the same time. And e2fsck will complain something like:

    Free inodes count wrong for group #1 (1, counted=0).
    Fix? no

    Free inodes count wrong for group #2 (3, counted=0).
    Fix? no

    Directories count wrong for group #2 (780, counted=779).
    Fix? no

    Free inodes count wrong for group #3 (2272, counted=2273).
    Fix? no

    So this patch try to protect it with the ext4_lock_group.

    btw, it is found by xfstests test case 269 and the volume is
    mkfsed with the parameter
    "-O ^resize_inode,^uninit_bg,extent,meta_bg,flex_bg,ext_attr"
    and I have run it 100 times and the error in e2fsck doesn't
    show up again.

Change-Id: Iba773843728759e1d64d4ff57765288eb5977665
Reviewed-on: http://mcrd1-5.corpnet.asus/code-review/master/67871
Reviewed-by: Lin Johnny1 <Johnny1_Lin@asus.com>
Tested-by: Lin Johnny1 <Johnny1_Lin@asus.com>
Reviewed-by: Sam hblee <Sam_hblee@asus.com>
2013-04-18 16:07:55 -07:00
..
acl.c
acl.h
balloc.c ext4: fix balloc.c printk-format-warning 2012-02-20 17:57:24 -05:00
bitmap.c
block_validity.c ext2/3/4: delete unneeded includes of module.h 2012-01-09 13:52:10 +01:00
dir.c Merge branch 'for-3.4' of git://linux-nfs.org/~bfields/linux 2012-03-29 14:53:25 -07:00
ext4.h ext4: address scalability issue by removing extent cache statistics 2012-04-16 12:16:20 -04:00
ext4_extents.h ext4: add no_printk argument validation, fix fallout 2012-03-19 23:11:43 -04:00
ext4_jbd2.c
ext4_jbd2.h ext4: expand commit callback and 2012-02-20 17:53:02 -05:00
extents.c Ext4 regression fixes for 3.4 2012-04-17 13:30:34 -07:00
file.c Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4 2011-11-02 10:06:20 -07:00
fsync.c ext4: fix race between sync and completed io work 2012-03-05 10:29:52 -05:00
hash.c ext4: return 32/64-bit dir name hash according to usage type 2012-03-18 22:44:40 -04:00
ialloc.c ext4: protect group inode free counting with group lock 2013-04-18 16:07:55 -07:00
indirect.c ext2/3/4: delete unneeded includes of module.h 2012-01-09 13:52:10 +01:00
inode.c ext4: fix potential deadlock in ext4_nonda_switch() 2013-03-15 17:09:42 -07:00
ioctl.c Merge branch 'for_linus' into for_linus_merged 2012-01-10 11:54:07 -05:00
Kconfig
Makefile
mballoc.c ext4: always set then trimmed blocks count into len 2012-03-21 21:26:22 -04:00
mballoc.h ext4: remove EXT4_MB_{BITMAP,BUDDY} macros 2012-02-20 17:54:06 -05:00
migrate.c ext4: using PTR_ERR() on the wrong variable in ext4_ext_migrate() 2012-02-20 17:53:06 -05:00
mmp.c ext4: Fix endianness bug when reading the MMP block 2012-02-27 01:09:03 -05:00
move_extent.c
namei.c ext4: format flag in dx_probe() 2012-02-20 23:09:36 -05:00
page-io.c Revert "ext4: don't release page refs in ext4_end_bio()" 2012-03-29 17:00:56 -07:00
resize.c ext4: update s_free_{inodes,blocks}_count during online resize 2012-03-20 15:46:11 -04:00
super.c super.c: unused variable warning without CONFIG_QUOTA 2012-04-23 21:44:41 -04:00
symlink.c
truncate.h
xattr.c ext4: add no_printk argument validation, fix fallout 2012-03-19 23:11:43 -04:00
xattr.h
xattr_security.c Merge branch 'for_linus' into for_linus_merged 2012-01-10 11:54:07 -05:00
xattr_trusted.c ext2/3/4: delete unneeded includes of module.h 2012-01-09 13:52:10 +01:00
xattr_user.c ext2/3/4: delete unneeded includes of module.h 2012-01-09 13:52:10 +01:00