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

From: John Garry
Date: Tue Mar 18 2025 - 05:14:33 EST


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.