Re: [PATCH v3 15/15] nvme: Ensure atomic writes will be executed atomically

From: John Garry
Date: Mon Jan 29 2024 - 04:38:02 EST


On 29/01/2024 06:20, Christoph Hellwig wrote:
On Thu, Jan 25, 2024 at 11:28:22AM +0000, John Garry wrote:
We have limits checks in XFS iomap and fops.c, but we would also want to
ensure that the the block layer is not doing anything it shouldn't be doing
after submit_bio_noacct(), like merging atomic write BIOs which straddle a
boundary or exceed atomic_max (if there were any merging).

The SCSI standard already has provision for error'ing an atomic write
command which exceeds the target atomic write capabilities, while NVMe
doesn't.

Can you get Oracle to propose this for NVMe? It always helps if these
suggestions come from a large buyer of NVMe equipment.

I'll let Martin comment on that.


BTW, Christoph did mention that he would like to see this:
https://lore.kernel.org/linux-nvme/20231109153603.GA2188@xxxxxx/

I can probably live with a sufficiently low-level block layer check.

That would probably be in blk_mq_dispatch_rq_list() for block drivers with .queue_rq set, but I would need to check for a good place for ->queue_rqs . I can't imagine that we just want to inefficiently iter all rqs at the ->queue_rqs call point.

However considering the nature of this change, it is not a good sign that we/I need to check... I'd be more inclined to leave as is.

Thanks,
John