diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index 336761400f7aa5b6e42b8ebede8694c9fa243dd8..b327fde0225a2d91840e48cbc9fd0530dcffbe1d 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -3147,6 +3147,9 @@ static int ext4_da_write_end(struct file *file, ext4_has_inline_data(inode)) return ext4_write_inline_data_end(inode, pos, len, copied, page); + if (unlikely(copied < len) && !PageUptodate(page)) + copied = 0; + start = pos & (PAGE_SIZE - 1); end = start + copied - 1;