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

From: John Garry
Date: Wed Dec 18 2024 - 06:16:16 EST


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