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

From: Darrick J. Wong
Date: Fri May 31 2024 - 10:12:21 EST


On Fri, May 31, 2024 at 06:46:10AM -0700, Christoph Hellwig wrote:
> > +/*
> > + * 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.

There are <cough> some users that want 1G extents.

For the rest of us who don't live in the stratosphere, it's convenient
for fsdax to have rt extents that match the PMD size, which could be
large on arm64 (e.g. 512M, or two smr sectors).

--D