Re: [RFC PATCH v4 8/8] xfs: improve truncate on a realtime inode with huge extsize

From: Christoph Hellwig
Date: Fri May 31 2024 - 09:46:41 EST


> +/*
> + * Decide if this file is a realtime file whose data allocation unit is larger
> + * than default.
> + */
> +static inline bool xfs_inode_has_hugertalloc(struct xfs_inode *ip)
> +{
> + struct xfs_mount *mp = ip->i_mount;
> +
> + return XFS_IS_REALTIME_INODE(ip) &&
> + mp->m_sb.sb_rextsize > XFS_B_TO_FSB(mp, XFS_DFL_RTEXTSIZE);
> +}

The default rtextsize is actually a single FSB unless we're on a striped
volume in which case it is increased.

I'll take care of removing the unused and confusing XFS_DFL_RTEXTSIZE,
but for this patch we'd need to know the trade-off of when to just
convert to unwritten. For single-fsb rtextents we obviously don't need
any special action. But do you see a slowdown when converting to
unwritten for small > 1 rtextsizes? Because if not we could just
always use that code path, which would significantly simplify things
and remove yet another different to test code path.