On 01/05/2024 02:07, Dave Chinner wrote:
[trim list a bit]
On Mon, Apr 29, 2024 at 05:47:39PM +0000, John Garry wrote:
For FS_XFLAG_FORCEALIGN support, we want to treat any sub-extent IO like
sub-fsblock DIO, in that we will zero the sub-extent when the mapping is
unwritten.
This will be important for atomic writes support, in that atomically
writing over a partially written extent would mean that we would need to
do the unwritten extent conversion write separately, and the write could
no longer be atomic.
I have been considering another approach to solve this problem.
In this patch - as you know - we zero unwritten parts of a newly
allocated extent. This is so that when we later issue an atomic write,
we would not have the problem of unwritten extents and how the iomap
iterator will create multiple BIOs (which is not permitted).
How about an alternate approach like this:
- no sub-extent zeroing
- iomap iter is changed to allocate a single BIO for an atomic write in
first iteration
- each iomap extent iteration appends data to that same BIO
- when finished iterating, we submit the BIO
Obviously that will mean many changes to the iomap bio iterator, but is
quite self-contained.
John