Re: [PATCH 1/2] ntfs: keep the file size on a failed initialized-size extension

From: Hyunchul Lee

Date: Thu Oct 29 2026 - 00:28:30 EST


On Wed, Oct 28, 2026 at 04:06:55PM +0800, Hongling Zeng wrote:
> ntfs_extend_initialized_size() only extends the initialized size and
> never changes the data size, but on a failure it calls
> truncate_setsize() with the old initialized size, which shrinks the
> VFS size down to it and drops the page cache beyond that point.
>
> None of the callers rolls the shrunk size back. A buffered write
> into a hole has nothing to roll back - the data size never changed -
> so the file keeps the shrunk size even though the data size on disk
> is intact. The mmap and named stream callers return without any
> rollback either.
>
> The sizes did not change, so nothing needs the shrink. Remove it.
>
> Fixes: af0db57d4293 ("ntfs: update inode operations")
> Signed-off-by: Hongling Zeng <zenghongling@xxxxxxxxxx>

Looks good to me.

Reviewed-by: Hyunchul Lee <hyc.lee@xxxxxxxxx>

> ---
> fs/ntfs/inode.c | 2 --
> 1 file changed, 2 deletions(-)
>
> diff --git a/fs/ntfs/inode.c b/fs/ntfs/inode.c
> index 206db4e99ef1..ac13e8776909 100644
> --- a/fs/ntfs/inode.c
> +++ b/fs/ntfs/inode.c
> @@ -2599,8 +2599,6 @@ int ntfs_extend_initialized_size(struct inode *vi, const loff_t offset,
> mutex_lock(&mrec_ni->mrec_lock);
> err = ntfs_attr_set_initialized_size(ni, new_size);
> mutex_unlock(&mrec_ni->mrec_lock);
> - if (err)
> - truncate_setsize(vi, old_init_size);
> out:
> filemap_invalidate_unlock(vi->i_mapping);
> return err;
> --
> 2.25.1
>

--
Thanks,
Hyunchul