On Mon, Jun 22, 2026 at 10:42:39AM -0700, Keith Busch wrote:
>       /*
> -      * Use the minimal dio alignment of the file system if provided.
> +      * Use the dio alignment of the file system if provided.  
> dio_offset_align
> +      * is the minimum dio size and offset; dio_mem_align is the buffer 
> memory
> +      * alignment, kept as a mask to become the loop device's dma_alignment 
> in
> +      * direct I/O mode where the buffer is handed to the backing file 
> unchanged.

A bunch of overly long lines here.

> +      * In direct I/O the user pages are handed to the backing file as-is, so
> +      * the backing's DMA alignment requirement applies to them.  Advertise 
> it
> +      * so misaligned I/O is rejected at this device's entry instead of being
> +      * dispatched to the backend.  Buffered I/O copies through the page 
> cache
> +      * and imposes no such requirement.
> +      */

More line spillover here.

> +     if (lo->lo_flags & LO_FLAGS_DIRECT_IO)
> +             lim->dma_alignment = lo->lo_dio_mem_align;
> +     else
> +             lim->dma_alignment = SECTOR_SIZE - 1;

Despite the comment above this does enforce a SECTOR_SIZE dma
alignment for buffered I/O.  Shouldn't this be our lowest supported
value (or dword alignment to match real devices)?

> +     lim = queue_limits_start_update(lo->lo_queue);
> +     if (lo->lo_flags & LO_FLAGS_DIRECT_IO)
> +             lim.dma_alignment = lo->lo_dio_mem_align;
> +     else
> +             lim.dma_alignment = SECTOR_SIZE - 1;

Should this and the above copy of this assignment be factored into a
helper?


Reply via email to