]> git.baikalelectronics.ru Git - kernel.git/commit
ext4: call ext4_forget() from ext4_free_blocks()
authorTheodore Ts'o <tytso@mit.edu>
Mon, 23 Nov 2009 12:17:05 +0000 (07:17 -0500)
committerTheodore Ts'o <tytso@mit.edu>
Mon, 23 Nov 2009 12:17:05 +0000 (07:17 -0500)
commit4c2e7cac4e56bc7608bc91442147b9e8c8b3c7c2
treebe908b6b0566f70d31378bf11b548a0d59ae0218
parentc61ad245f8b1f8af31a0deb8399e28277e1b0592
ext4: call ext4_forget() from ext4_free_blocks()

Add the facility for ext4_forget() to be called from
ext4_free_blocks().  This simplifies the code in a large number of
places, and centralizes most of the work of calling ext4_forget() into
a single place.

Also fix a bug in the extents migration code; it wasn't calling
ext4_forget() when releasing the indirect blocks during the
conversion.  As a result, if the system cashed during or shortly after
the extents migration, and the released indirect blocks get reused as
data blocks, the journal replay would corrupt the data blocks.  With
this new patch, fixing this bug was as simple as adding the
EXT4_FREE_BLOCKS_FORGET flags to the call to ext4_free_blocks().

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Cc: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
fs/ext4/ext4.h
fs/ext4/extents.c
fs/ext4/inode.c
fs/ext4/mballoc.c
fs/ext4/migrate.c
fs/ext4/xattr.c
include/trace/events/ext4.h