mirror of
https://github.com/adulau/aha.git
synced 2024-12-28 11:46:19 +00:00
ext4: Fix the alloc on close after a truncate hueristic
In an attempt to avoid doing an unneeded flush after opening a (previously non-existent) file with O_CREAT|O_TRUNC, the code only triggered the hueristic if ei->disksize was non-zero. Turns out that the VFS doesn't call ->truncate() if the file doesn't exist, and ei->disksize is always zero even if the file previously existed. So remove the test, since it isn't necessary and in fact disabled the hueristic. Thanks to Clemens Eisserer that he was seeing problems with files written using kwrite and eclipse after sudden crashes caused by a buggy Intel video driver. Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
This commit is contained in:
parent
fb40ba0d98
commit
5534fb5bb3
1 changed files with 1 additions and 2 deletions
|
@ -3973,8 +3973,7 @@ void ext4_truncate(struct inode *inode)
|
|||
if (!ext4_can_truncate(inode))
|
||||
return;
|
||||
|
||||
if (ei->i_disksize && inode->i_size == 0 &&
|
||||
!test_opt(inode->i_sb, NO_AUTO_DA_ALLOC))
|
||||
if (inode->i_size == 0 && !test_opt(inode->i_sb, NO_AUTO_DA_ALLOC))
|
||||
ei->i_state |= EXT4_STATE_DA_ALLOC_CLOSE;
|
||||
|
||||
if (EXT4_I(inode)->i_flags & EXT4_EXTENTS_FL) {
|
||||
|
|
Loading…
Reference in a new issue