|
@@ -3614,6 +3614,12 @@ int ext4_punch_hole(struct inode *inode, loff_t offset, loff_t length)
|
|
|
up_write(&EXT4_I(inode)->i_data_sem);
|
|
|
if (IS_SYNC(inode))
|
|
|
ext4_handle_sync(handle);
|
|
|
+
|
|
|
+ /* Now release the pages again to reduce race window */
|
|
|
+ if (last_block_offset > first_block_offset)
|
|
|
+ truncate_pagecache_range(inode, first_block_offset,
|
|
|
+ last_block_offset);
|
|
|
+
|
|
|
inode->i_mtime = inode->i_ctime = ext4_current_time(inode);
|
|
|
ext4_mark_inode_dirty(handle, inode);
|
|
|
out_stop:
|