A zero range WRITE_ZEROES splits and converts an unwrit -> written extent but it doesn't need any protection against the zeroout fallback in ext4_split_extent_zeroout() because it's data is just zeroes anyways. Hence, indicate to the zeroout code that the caller doesn't account for itself in ei->i_conv_pending_ios. Fixes: ea96cb5c4ae3 ("ext4: don't split extent before submitting I/O") Signed-off-by: Ojaswin Mujoo --- fs/ext4/extents.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c index e4e65f3f576d..d546001fedc6 100644 --- a/fs/ext4/extents.c +++ b/fs/ext4/extents.c @@ -4765,7 +4765,7 @@ static int ext4_alloc_file_blocks(struct file *file, loff_t offset, loff_t len, ret = ext4_convert_unwritten_extents(handle, inode, (loff_t)map.m_lblk << blkbits, (loff_t)map.m_len << blkbits, - &converted, 0); + &converted, EXT4_GET_BLOCKS_NO_CONV_ACC); if (ret) map.m_len = converted; -- 2.55.0