Re: [PATCH 02/10] ext4: ext4_block_truncate_page() returns zeroed length on success

From: Jan Kara

Date: Mon Mar 23 2026 - 13:02:28 EST


On Tue 10-03-26 09:40:53, Zhang Yi wrote:
> From: Zhang Yi <yi.zhang@xxxxxxxxxx>
>
> Return the actual zeroed length instead of 0 on success. This prepares
> for the upcoming iomap buffered I/O conversion by exposing zeroed length
> information to callers.
>
> Signed-off-by: Zhang Yi <yi.zhang@xxxxxxxxxx>

Looks good. Feel free to add:

Reviewed-by: Jan Kara <jack@xxxxxxx>

Honza

> ---
> fs/ext4/inode.c | 10 +++++++++-
> 1 file changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
> index 1e037a314dab..a737ce05e768 100644
> --- a/fs/ext4/inode.c
> +++ b/fs/ext4/inode.c
> @@ -4136,6 +4136,7 @@ static int ext4_block_zero_page_range(handle_t *handle,
> * up to the end of the block which corresponds to `from'.
> * This required during truncate. We need to physically zero the tail end
> * of that block so it doesn't yield old data if the file is later grown.
> + * Return the zeroed length on success.
> */
> static int ext4_block_truncate_page(handle_t *handle,
> struct address_space *mapping, loff_t from)
> @@ -4143,6 +4144,8 @@ static int ext4_block_truncate_page(handle_t *handle,
> unsigned length;
> unsigned blocksize;
> struct inode *inode = mapping->host;
> + bool did_zero = false;
> + int err;
>
> /* If we are processing an encrypted inode during orphan list handling */
> if (IS_ENCRYPTED(inode) && !fscrypt_has_encryption_key(inode))
> @@ -4151,7 +4154,12 @@ static int ext4_block_truncate_page(handle_t *handle,
> blocksize = i_blocksize(inode);
> length = blocksize - (from & (blocksize - 1));
>
> - return ext4_block_zero_page_range(handle, mapping, from, length, NULL);
> + err = ext4_block_zero_page_range(handle, mapping, from, length,
> + &did_zero);
> + if (err)
> + return err;
> +
> + return did_zero ? length : 0;
> }
>
> int ext4_zero_partial_blocks(handle_t *handle, struct inode *inode,
> --
> 2.52.0
>
--
Jan Kara <jack@xxxxxxxx>
SUSE Labs, CR