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>