ext4: make sure to revoke all the freeable blocks in ext4_free_blocks
authorDaeho Jeong <daeho.jeong@samsung.com>
Sun, 21 Feb 2016 23:31:41 +0000 (18:31 -0500)
committerTheodore Ts'o <tytso@mit.edu>
Sun, 21 Feb 2016 23:31:41 +0000 (18:31 -0500)
commitf96c450dabf5497794af8c45f589d44b4549d1fc
treeaeeeb84bc86dbf70fc392539c0f955fae2c6a486
parent74dae4278546b897eb81784fdfcce872ddd8b2b8
ext4: make sure to revoke all the freeable blocks in ext4_free_blocks

Now, ext4_free_blocks() doesn't revoke data blocks of per-file data
journalled inode and it can cause file data inconsistency problems.
Even though data blocks of per-file data journalled inode are already
forgotten by jbd2_journal_invalidatepage() in advance of invoking
ext4_free_blocks(), we still need to revoke the data blocks here.
Moreover some of the metadata blocks, which are not found by
sb_find_get_block(), are still needed to be revoked, but this is also
missing here.

Signed-off-by: Daeho Jeong <daeho.jeong@samsung.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Reviewed-by: Jan Kara <jack@suse.cz>
fs/ext4/mballoc.c