Re: [PATCH v8 05/10] block: Add core atomic write support

Keith Busch
2024-06-17T18:56:05Z

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.