Re: [PATCH v2 2/4] block: factor block size and alignment handling out of blk_stack_limits

John Garry <[email protected]>
Newsgroups org.infradead.lists.linux-nvme,org.kernel.vger.linux-block
Organization Oracle Corporation
Message-ID <[email protected]>
On 06/08/2026 03:46, Yao Sang wrote:
> Topology limits are the block size and alignment limits that the top
> device exposes after its data is placed at an offset on a bottom device.
> blk_stack_limits() uses start, the first data sector in the bottom device
> used by the top device, to calculate alignment_offset.
> 
> It then stacks logical_block_size, physical_block_size, io_min, io_opt and
> chunk_sectors, checks that they are compatible, and rounds max_sectors,
> max_hw_sectors and max_dev_sectors down to the final logical_block_size.
> 
> Keep these operations together because the checks and rounding must run
> after the final logical and physical block sizes are known. Factor them
> into a static blk_stack_topology_limits() helper.

It still is not clear to me what is the criteria for a limit to be 
evaluated in blk_stack_topology_limits() (and not in blk_stack_limits()).

You seem to be just saying that some limits need to be calculated before 
other dependent limits, so put them in a separate function.

> 
> There is no behavior change.
> > Signed-off-by: Yao Sang <[email protected]>
> ---
>   block/blk-settings.c | 169 ++++++++++++++++++++++++-------------------
>   1 file changed, 93 insertions(+), 76 deletions(-)
> 
> diff --git a/block/blk-settings.c b/block/blk-settings.c
> index 8274631290db..1aff818aaaac 100644
> --- a/block/blk-settings.c
> +++ b/block/blk-settings.c
> @@ -756,6 +756,96 @@ static void blk_stack_atomic_writes_limits(struct queue_limits *t,
>   	t->atomic_write_hw_boundary = 0;
>   }
>   
> +/*
> + * Stack and check logical_block_size, physical_block_size, io_min, io_opt,
> + * chunk_sectors and alignment_offset for a bottom-device range, then round
> + * max_sectors, max_hw_sectors and max_dev_sectors to logical_block_size.
> + */

This just describes what the code does. Anyone can see that.

> +static int blk_stack_topology_limits(struct queue_limits *t,
> +		const struct queue_limits *b, sector_t start)
> +{
> +	unsigned int top, bottom, alignment;
> +	int ret = 0;
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.