diff options
author | Lukas Czerner <lczerner@redhat.com> | 2013-05-28 03:32:35 (GMT) |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2013-05-28 03:32:35 (GMT) |
commit | 0713ed0cde76438d05849f1537d3aab46e099475 (patch) | |
tree | 036770cd667c43ade87485d4aab5f25e90308821 | |
parent | d863dc3614e489e11808f940a612b520ce1dff91 (diff) | |
download | linux-0713ed0cde76438d05849f1537d3aab46e099475.tar.xz |
ext4: Call ext4_jbd2_file_inode() after zeroing block
In data=ordered mode we should call ext4_jbd2_file_inode() so that crash
after the truncate transaction has committed does not expose stall data
in the tail of the block.
Thanks Jan Kara for pointing that out.
Signed-off-by: Lukas Czerner <lczerner@redhat.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
-rw-r--r-- | fs/ext4/inode.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index 9b33803..e3d0fb9 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -3681,8 +3681,11 @@ int ext4_block_zero_page_range(handle_t *handle, err = 0; if (ext4_should_journal_data(inode)) { err = ext4_handle_dirty_metadata(handle, inode, bh); - } else + } else { mark_buffer_dirty(bh); + if (ext4_test_inode_state(inode, EXT4_STATE_ORDERED_MODE)) + err = ext4_jbd2_file_inode(handle, inode); + } unlock: unlock_page(page); |