Re: [PATCH v8 05/15] xfs: ignore HW which cannot atomic write a single block

Darrick J. Wong
2025-04-23T15:12:24Z

On Wed, Apr 23, 2025 at 10:33:17AM +0200, Christoph Hellwig wrote:
> On Wed, Apr 23, 2025 at 09:28:14AM +0100, John Garry wrote:
> >> But maybe we should just delay setting the atomic values until later so
> >> that it can be done in a single pass? E.g. into xfs_setsize_buftarg
> >> which then should probably be rename to something like
> >> xfs_buftarg_setup.
> >>
> >
> > How about just do away with btp->bt_bdev_awu_{min, max} struct members, and
> > call bdev_atomic_write_unit_max(mp->m_ddev_targp->bt_bdev) [and same for
> > RT] to later to set the mp awu max values at mountfs time? I think that
> > would work..
>
> Sounds reasonable.

I disagree, leaving the hardware awu_min/max in the buftarg makes more
sense to me because the buftarg is our abstraction for a block device,
and these fields describe the atomic write units that we can use with
that block device.

IOWs, I don't like dumping even more into struct xfs_mount. xfs_group
has an awu_max for the software fallback, xfs_buftarg has an awu_min/max
for hardware, and even this V8 has yet a third pair of awu_min/max in
xfs_mount which I think is just the buftarg version but possibly
truncated. I find those last two pairs confusing.

--D