Re: [PATCH v2 00/16] block atomic writes

From: Christoph Hellwig
Date: Thu Dec 21 2023 - 07:19:46 EST


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.