diff options
author | Tao Ma <boyu.mt@taobao.com> | 2012-05-28 18:20:59 -0400 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2012-05-28 18:20:59 -0400 |
commit | 6f2e9f0e7d795214b9cf5a47724a273b705fd113 (patch) | |
tree | c33979cd8d907b0eab9e3d9eada09a09e222e54a /lib/flex_array.c | |
parent | 8563000d3bf3ccfccce335c092a7c43078be8ffd (diff) |
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.
Signed-off-by: Tao Ma <boyu.mt@taobao.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Diffstat (limited to 'lib/flex_array.c')
0 files changed, 0 insertions, 0 deletions