On Mon, Jun 10, 2024 at 10:43:24AM +0000, John Garry wrote:
> +static void blk_validate_atomic_write_limits(struct queue_limits *lim)
> +{
> +     unsigned int boundary_sectors_hw;
> +
> +     if (!lim->atomic_write_hw_max)
> +             goto unsupported;
> +
> +     boundary_sectors_hw = lim->atomic_write_hw_boundary >> SECTOR_SHIFT;
> +
> +     if (boundary_sectors_hw) {
> +             /* It doesn't make sense to allow different non-zero values */
> +             if (lim->chunk_sectors &&
> +                 lim->chunk_sectors != boundary_sectors_hw)
> +                     goto unsupported;

I'm not sure I follow why these two need to be the same. I can see
checking for 'chunk_sectors % boundary_sectors_hw == 0', but am I
missing something else?

The reason I ask, zone block devices redefine the "chunk_sectors" to
mean the zone size, and I'm pretty sure the typical zone size is much
larger than the any common atomic write size.

Reply via email to