Re: [PATCH v2 2/7] iomap: Add zero unwritten mappings dio support

John Garry
2024-12-18T11:15:58Z

On 17/12/2024 07:08, Christoph Hellwig wrote:
> On Fri, Dec 13, 2024 at 04:56:38PM -0800, Darrick J. Wong wrote:
>>>> "If you receive -EBADMAP, then call fallocate(FALLOC_FL_MAKE_OVERWRITE)
>>>> to force all the mappings to pure overwrites."
>>>
>>> Ewwwwwwwwwwwwwwwwwwwww.
>>>
>>> That's not a sane API in any way.
>>
>> Oh I know, I'd much rather stick to the view that block untorn writes
>> are a means for programs that only ever do IO in large(ish) blocks to
>> take advantage of a hardware feature that also wants those large
>> blocks.
>
> I (vaguely) agree ith that.
>
>> And only if the file mapping is in the correct state, and the
>> program is willing to *maintain* them in the correct state to get the
>> better performance.
>
> I kinda agree with that, but the maintain is a bit hard as general
> rule of thumb as file mappings can change behind the applications
> back. So building interfaces around the concept that there are
> entirely stable mappings seems like a bad idea.

I tend to agree.

>
>> I don't want xfs to grow code to write zeroes to
>> mapped blocks just so it can then write-untorn to the same blocks.
>
> Agreed.
>

So if we want to allow large writes over mixed extents, how to handle?

Note that some time ago we also discussed that we don't want to have a
single bio covering mixed extents as we cannot atomically convert all
unwritten extents to mapped.

Thanks,
John