• Wang Shilong's avatar
    ext4: fix race when setting the bitmap corrupted flag · 9af0b3d1
    Wang Shilong authored
    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: default avatarWang Shilong <wshilong@ddn.com>
    Signed-off-by: default avatarTheodore Ts'o <tytso@mit.edu>
    Cc: stable@vger.kernel.org
    9af0b3d1
super.c 170 KB