Re: [PATCH v6 11/13] xfs: add xfs_file_dio_write_atomic()

John Garry
2025-03-18T09:13:38Z

On 18/03/2025 08:46, Christoph Hellwig wrote:
> On Tue, Mar 18, 2025 at 08:42:36AM +0000, John Garry wrote:
>>> I see that this is what's done in the current series now. But that feels
>>> very wrong. Why do you want to deprive the user of this nice and useful
>>> code if they don't have the right hardware?
>>
>> I don't think it's fair to say that we deprive the user - so far we just
>> don't and nobody has asked for atomics without HW support.
>
> You're still keeping this nice functionality from the users..
>
>>
>>> Why do we limit us to the
>>> hardware supported size when we support more in software?
>>
>> As I see, HW offload gives fast and predictable performance.
>>
>> The COW method is just a (slow) fallback is when HW offload is not possible.
>>
>> If we want to allow the user to avail of atomics greater than the mounted
>> bdev, then we should have a method to tell the user of the optimised
>> threshold. They could read the bdev atomic limits and infer this, but that
>> is not a good user experience.
>
> Yes, there should be an interface to expose that.

So we could add to statx.atomic_write_unit_max_opt, which is the
optimised/fast limit, i.e. bdev limit. Is that sane?

Note that we already have STATX_ATTR_WRITE_ATOMIC to get the atomic
limits. I wouldn't want to add a new flag just to get this new member.
So I suppose that if we added statx.atomic_write_unit_max_opt, the API
would be: if statx.atomic_write_unit_max_opt is zero, then
statx.atomic_write_unit_max is optimised limit also.

> But even without
> the hardware acceleration a guaranteed untorn write is a really nice
> feature to have.
>