diff options
Diffstat (limited to 'fs/ext4/inode.c')
-rw-r--r-- | fs/ext4/inode.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index 113458c9d08b..5324a38d848d 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c | |||
@@ -3614,6 +3614,12 @@ int ext4_punch_hole(struct inode *inode, loff_t offset, loff_t length) | |||
3614 | up_write(&EXT4_I(inode)->i_data_sem); | 3614 | up_write(&EXT4_I(inode)->i_data_sem); |
3615 | if (IS_SYNC(inode)) | 3615 | if (IS_SYNC(inode)) |
3616 | ext4_handle_sync(handle); | 3616 | ext4_handle_sync(handle); |
3617 | |||
3618 | /* Now release the pages again to reduce race window */ | ||
3619 | if (last_block_offset > first_block_offset) | ||
3620 | truncate_pagecache_range(inode, first_block_offset, | ||
3621 | last_block_offset); | ||
3622 | |||
3617 | inode->i_mtime = inode->i_ctime = ext4_current_time(inode); | 3623 | inode->i_mtime = inode->i_ctime = ext4_current_time(inode); |
3618 | ext4_mark_inode_dirty(handle, inode); | 3624 | ext4_mark_inode_dirty(handle, inode); |
3619 | out_stop: | 3625 | out_stop: |