ext4: Call ext4_jbd2_file_inode() after zeroing block
authorLukas Czerner <lczerner@redhat.com>
Tue, 28 May 2013 03:32:35 +0000 (23:32 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Tue, 28 May 2013 03:32:35 +0000 (23:32 -0400)
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>
fs/ext4/inode.c

index 9b3380327ae287e899580c13faa31dde6c5aa17c..e3d0fb9e78c4b4c78b86dd0d530a60c03938e18a 100644 (file)
@@ -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);