Re: [PATCH v2] ext4: Fix i_disksize exceeding i_size problem in paritally written case

From: Theodore Ts'o
Date: Sun Apr 30 2023 - 13:59:47 EST



On Tue, 21 Mar 2023 09:37:21 +0800, Zhihao Cheng wrote:
> Following process makes i_disksize exceed i_size:
>
> generic_perform_write
> copied = iov_iter_copy_from_user_atomic(len) // copied < len
> ext4_da_write_end
> | ext4_update_i_disksize
> | new_i_size = pos + copied;
> | WRITE_ONCE(EXT4_I(inode)->i_disksize, newsize) // update i_disksize
> | generic_write_end
> | copied = block_write_end(copied, len) // copied = 0
> | if (unlikely(copied < len))
> | if (!PageUptodate(page))
> | copied = 0;
> | if (pos + copied > inode->i_size) // return false
> if (unlikely(copied == 0))
> goto again;
> if (unlikely(iov_iter_fault_in_readable(i, bytes))) {
> status = -EFAULT;
> break;
> }
>
> [...]

Applied, thanks!

[1/1] ext4: Fix i_disksize exceeding i_size problem in paritally written case
commit: 1dedde690303c05ef732b7c5c8356fdf60a4ade3

Best regards,
--
Theodore Ts'o <tytso@xxxxxxx>