Re: [PATCH v8 11/15] xfs: commit CoW-based atomic writes atomically

Darrick J. Wong
2025-04-23T14:58:51Z

On Wed, Apr 23, 2025 at 10:23:07AM +0200, Christoph Hellwig wrote:
> On Tue, Apr 22, 2025 at 12:27:35PM +0000, John Garry wrote:
> > +STATIC void
>
> Didn't we phase out STATIC for new code?
>
> > +xfs_calc_default_atomic_ioend_reservation(
> > + struct xfs_mount *mp,
> > + struct xfs_trans_resv *resp)
> > +{
> > + if (xfs_has_reflink(mp))
> > + resp->tr_atomic_ioend = resp->tr_itruncate;
> > + else
> > + memset(&resp->tr_atomic_ioend, 0,
> > + sizeof(resp->tr_atomic_ioend));
> > +}
>
> What is the point of zeroing out the structure for the non-reflink
> case? Just as a poision for not using it when not supported as no
> code should be doing that? Just thinking of this because it is a
> potentially nasty landmine for the zoned atomic support.

Yes. I thought about adding a really stupid helper:

static inline bool xfs_has_sw_atomic_write(struct xfs_mount *mp)
{
return xfs_has_reflink(mp);
}

But that seemed too stupid so I left it out. Maybe it wasn't so dumb,
since that would be where you'd enable ZNS support by changing that to:

return xfs_has_reflink(mp) || xfs_has_zoned(mp);

--D

> Otherwise looks good:
>
> Reviewed-by: Christoph Hellwig <hch@lst.de>
>