Skip to content

Commit

Permalink
ext4: Don't reuse released data blocks until transaction commits
Browse files Browse the repository at this point in the history
We need to make sure we don't reuse the data blocks released
during the transaction untill the transaction commits. We force
this mode only for ordered and journalled mode. Writeback mode
already don't provided data consistency.

Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
  • Loading branch information
Aneesh Kumar K.V authored and Theodore Ts'o committed Oct 11, 2008
1 parent c894058 commit a1aebc1
Showing 1 changed file with 10 additions and 2 deletions.
12 changes: 10 additions & 2 deletions fs/ext4/balloc.c
Original file line number Diff line number Diff line change
Expand Up @@ -568,8 +568,16 @@ void ext4_free_blocks(handle_t *handle, struct inode *inode,

/* this isn't the right place to decide whether block is metadata
* inode.c/extents.c knows better, but for safety ... */
if (S_ISDIR(inode->i_mode) || S_ISLNK(inode->i_mode) ||
ext4_should_journal_data(inode))
if (S_ISDIR(inode->i_mode) || S_ISLNK(inode->i_mode))
metadata = 1;

/* We need to make sure we don't reuse
* block released untill the transaction commit.
* writeback mode have weak data consistency so
* don't force data as metadata when freeing block
* for writeback mode.
*/
if (metadata == 0 && !ext4_should_writeback_data(inode))
metadata = 1;

sb = inode->i_sb;
Expand Down

0 comments on commit a1aebc1

Please sign in to comment.