On Tue, Jan 14, 2020 at 05:12:21PM +0100, Christoph Hellwig wrote: > diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c > index 0e8708b77da6..b6aa2d249b30 100644 > --- a/fs/ext4/extents.c > +++ b/fs/ext4/extents.c > @@ -4777,9 +4777,6 @@ static long ext4_zero_range(struct file *file, loff_t offset, > if (mode & FALLOC_FL_KEEP_SIZE) > flags |= EXT4_GET_BLOCKS_KEEP_SIZE; > > - /* Wait all existing dio workers, newcomers will block on i_mutex */ > - inode_dio_wait(inode); > - > /* Preallocate the range including the unaligned edges */ > if (partial_begin || partial_end) { > ret = ext4_alloc_file_blocks(file, I note that you've dropped the inode_dio_wait() in ext4's ZERO_RANGE, COLLAPSE_RANGE, INSERT_RANGE, etc. We had added these to avoid problems when various fallocate operations which modify the inode's logical->physical block mapping racing with direct I/O (both reads or writes). I don't see a replacement protection in this patch series. How does are file systems supported to protect against such races? - Ted