Re: [PATCH] xfs: Check for deallayed allocations before setting extsize
From: Christoph Hellwig
Date: Thu Oct 03 2024 - 10:38:21 EST
On Thu, Oct 03, 2024 at 03:42:07PM +0530, Ojaswin Mujoo wrote:
> Extsize is allowed to be set on files with no data in it. For this,
> we were checking if the files have extents but missed to check if
> delayed extents were present. This patch adds that check.
>
> **Without the patch (SUCCEEDS)**
>
> $ xfs_io -c 'open -f testfile' -c 'pwrite 0 1024' -c 'extsize 65536'
Can you add a testcase for this to xfstests?
> - if (S_ISREG(VFS_I(ip)->i_mode) && ip->i_df.if_nextents &&
> + if (S_ISREG(VFS_I(ip)->i_mode) &&
> + (ip->i_df.if_nextents || ip->i_delayed_blks) &&
We have two other copies of the
ip->i_df.if_nextents || ip->i_delayed_blks
pattern to check if there is any data on the inode in xfs_inactive and
xfs_ioctl_setattr_xflags. Maybe facto this into a documented helper?
Otherwise looks good:
Reviewed-by: Christoph Hellwig <hch@xxxxxx>