Re: [PATCH v3 05/13] generic/1226: Add atomic write test using fio crc check verifier

From: John Garry
Date: Thu Jul 31 2025 - 03:59:45 EST


On 31/07/2025 05:18, Ojaswin Mujoo wrote:
Heh, here comes that feature naming confusing again. This is my
definition:

RWF_ATOMIC means the system won't introduce new tearing when persisting
file writes. The application is allowed to introduce tearing by writing
to overlapping ranges at the same time. The system does not isolate
overlapping reads from writes.

--D
Hey Darrick, John,

So seems like my expectations of RWF_ATOMIC were a bit misplaced. I
understand now that we don't really guarantee much when there are
overlapping parallel writes going on. Even 2 overlapping RWF_ATOMIC
writes can get torn. Seems like there are some edge cases where this
might happen with hardware atomic writes as well.

In that sense, if this fio test is doing overlapped atomic io and
expecting them to be untorn, I don't think that's the correct way to
test it since that is beyond what RWF_ATOMIC guarantees.

I think that this test has value, but can only be used for ext4 or any FS which only relies on HW atomics only.

The value is that we prove that we don't get any bios being split in the storage stack, which is essential for HW atomics support.

Both NVMe and SCSI guarantee serialization of atomic writes.


I'll try to check if we can modify the tests to write on non-overlapping
ranges in a file.

JFYI, for testing SW-based atomic writes on XFS, I do something like this. I have multiple threads each writing to separate regions of a file or writing to separate files. I use this for power-fail testing with my RPI. Indeed, I have also being using this sort of test in qemu for shutting down the VM when fio is running - I would like to automate this, but I am not sure how yet.

Please let me know if you want further info on the fio script.

Thanks,
John