]> git.baikalelectronics.ru Git - kernel.git/commit
ext4: fix race when setting the bitmap corrupted flag
authorWang Shilong <wshilong@ddn.com>
Sun, 29 Jul 2018 21:27:45 +0000 (17:27 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Sun, 29 Jul 2018 21:27:45 +0000 (17:27 -0400)
commitde484f5cba2a103a0841f68453b04459731f84a9
tree5ed219a153d49a4691ea5d2f729d742e80a69173
parent9cd979d3bb9716b5413f8cd999d8e4d8743749d2
ext4: fix race when setting the bitmap corrupted flag

Whenever we hit block or inode bitmap corruptions we set
bit and then reduce this block group free inode/clusters
counter to expose right available space.

However some of ext4_mark_group_bitmap_corrupted() is called
inside group spinlock, some are not, this could make it happen
that we double reduce one block group free counters from system.

Always hold group spinlock for it could fix it, but it looks
a little heavy, we could use test_and_set_bit() to fix race
problems here.

Signed-off-by: Wang Shilong <wshilong@ddn.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Cc: stable@vger.kernel.org
fs/ext4/super.c