Re: [PATCH v7 4/9] block: Add core atomic write support

John Garry <[email protected]>
Newsgroups gmane.linux.kernel.aio.general,gmane.linux.block,gmane.linux.kernel,gmane.linux.file-systems,gmane.linux.scsi,gmane.comp.file-systems.btrfs,gmane.linux.kernel.io-uring
Organization Oracle Corporation
Message-ID <[email protected]>
On 03/06/2024 13:31, Hannes Reinecke wrote:
>>
>> It seems ok in principle - we would just need to ensure that it is 
>> watertight.
>>
> 
> We currently use chunk_sectors for quite some different things, most 
> notably zones boundaries, NIOIB, raid stripes etc.
> So I don't have an issue adding another use-case for it.
> 
>>> Q2: If we don't, shouldn't we align the atomic write boundary to the 
>>> chunk_sectors setting to ensure both match up?
>>
>> Yeah, right. But we can only handle what HW tells.
>>
>> The atomic write boundary is only relevant to NVMe. NVMe NOIOB - which 
>> we use to set chunk_sectors - is an IO optimization hint, AFAIK. 
>> However the atomic write boundary is a hard limit. So if NOIOB is not 
>> aligned with the atomic write boundary - which seems unlikely - then 
>> the atomic write boundary takes priority.
>>
> Which is what I said; we need to check. And I would treat a NOIOB value 
> not aligned to the atomic write boundary as an error.

Yeah, maybe we can reject that in blk_validate_limits(), by error'ing or 
disabling atomic writes there.

> 
> But the real issue here is that the atomic write boundary only matters
> for requests, and not for the entire queue.
> So using chunk_sectors is out of question as this would affect all 
> requests, and my comment was actually wrong.
> I'll retract it.

I think that some of the logic could be re-used. 
rq_straddles_atomic_write_boundary() is checked in merging of reqs/bios 
(to see if the resultant req straddles a boundary).

So instead of saying: "will the resultant req straddle a boundary", 
re-using path like blk_rq_get_max_sectors() -> blk_chunk_sectors_left(), 
we check "is there space within the boundary limit to add this req/bio". 
We need to take care of front and back merges, though.

Thanks,
John



--
To unsubscribe, send a message with 'unsubscribe linux-aio' in
the body to [email protected].  For more info on Linux AIO,
see: http://www.kvack.org/aio/
Don't email: <a href=mailto:"[email protected]">[email protected]</a>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.