On Thu, Dec 21, 2023 at 09:49:35AM +0000, John Garry wrote: > I noticed the NVMe patch to stop always setting virt boundary (thanks), but > I am struggling for the wording for iovecs rules. I'd like to reuse > iov_iter_is_aligned() to enforce any such rule. > > I am thinking: > - ubuf / iovecs need to be PAGE-aligned > - each iovec needs to be length of multiple of PAGE_SIZE > > But that does not work for total length < PAGE_SIZE. > > So then we could have: > - ubuf / iovecs need to be PAGE-aligned > - each iovec needs to be length of multiple of atomic_write_unit_min. If > total length > PAGE_SIZE, each iovec also needs to be a multiple of > PAGE_SIZE. > > I'd rather something simpler. Maybe it's ok. If we decided to not support atomic writes on anything setting a virt boundary we don't have to care about the alignment of each vector, and IMHO we should do that as everything else would be a life in constant pain. If we really have a use case for atomic writes on consumer NVMe devices we'll just have to limit it to a single iovec.