diff options
author | Lukas Czerner <lczerner@redhat.com> | 2013-05-27 23:32:35 -0400 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2013-05-27 23:32:35 -0400 |
commit | 0713ed0cde76438d05849f1537d3aab46e099475 (patch) | |
tree | 036770cd667c43ade87485d4aab5f25e90308821 /fs/ext4 | |
parent | d863dc3614e489e11808f940a612b520ce1dff91 (diff) |
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>
Diffstat (limited to 'fs/ext4')
-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 9b3380327ae2..e3d0fb9e78c4 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c | |||
@@ -3681,8 +3681,11 @@ int ext4_block_zero_page_range(handle_t *handle, | |||
3681 | err = 0; | 3681 | err = 0; |
3682 | if (ext4_should_journal_data(inode)) { | 3682 | if (ext4_should_journal_data(inode)) { |
3683 | err = ext4_handle_dirty_metadata(handle, inode, bh); | 3683 | err = ext4_handle_dirty_metadata(handle, inode, bh); |
3684 | } else | 3684 | } else { |
3685 | mark_buffer_dirty(bh); | 3685 | mark_buffer_dirty(bh); |
3686 | if (ext4_test_inode_state(inode, EXT4_STATE_ORDERED_MODE)) | ||
3687 | err = ext4_jbd2_file_inode(handle, inode); | ||
3688 | } | ||
3686 | 3689 | ||
3687 | unlock: | 3690 | unlock: |
3688 | unlock_page(page); | 3691 | unlock_page(page); |