ext4: Fix block bitmap inconsistencies after a crash when deleting files
authorAmir G <amir73il@users.sourceforge.net>
Tue, 27 Jul 2010 15:56:05 +0000 (11:56 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Tue, 27 Jul 2010 15:56:05 +0000 (11:56 -0400)
commit40389687382bf0ae71458e7c0f828137a438a956
treed2a49d494754e7fa28d33c2389f78a5b5da0db4f
parenta271fe8527fe9637bdd82c97123b1356940dd84b
ext4: Fix block bitmap inconsistencies after a crash when deleting files

We have experienced bitmap inconsistencies after crash during file
delete under heavy load.  The crash is not file system related and I
the following patch in ext4_free_branches() fixes the recovery
problem.

If the transaction is restarted and there is a crash before the new
transaction is committed, then after recovery, the blocks that this
indirect block points to have been freed, but the indirect block
itself has not been freed and may still point to some of the free
blocks (because of the ext4_forget()).

So ext4_forget() should be called inside ext4_free_blocks() to avoid
this problem.

Signed-off-by: Amir Goldstein <amir73il@users.sf.net>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
fs/ext4/inode.c