On 6/5/24 13:23, Christoph Hellwig wrote:
> On Wed, Jun 05, 2024 at 11:24:45AM +0900, Damien Le Moal wrote:
>> The generic stacking of limits implemented in the block layer cannot
>> correctly handle stacking of zone resource limits (max open zones and
>> max active zones)
> 
> ... for DM.  All other limits stacking ends up in a single top device.

I know. And I do not see your point here.

> 
>> +    /*
>> +     * If the target does not map all sequential zones, the limits
>> +     * will not be reliable.
>> +     */
>> +    if (zc.target_nr_seq_zones < zc.total_nr_seq_zones)
>> +            zlim->reliable_limits = false;
>> +
>> +    /*
>> +     * If the target maps less sequential zones than the limit values, then
>> +     * we do not have limits for this target.
>> +     */
>> +    max_active_zones = disk->queue->limits.max_active_zones;
>> +    if (max_active_zones >= zc.target_nr_seq_zones)
>> +            max_active_zones = 0;
>> +    zlim->max_active_zones =
>> +            min_not_zero(max_active_zones, zlim->max_active_zones);
>> +
>> +    max_open_zones = disk->queue->limits.max_open_zones;
>> +    if (max_open_zones >= zc.target_nr_seq_zones)
>> +            max_open_zones = 0;
>> +    zlim->max_open_zones =
>> +            min_not_zero(max_open_zones, zlim->max_open_zones);
> 
> Given that your previous patch already caps max_open/active_zones to the
> number of sequential zones, duplicating this here should not be needed.

Indeed. Will remove this.

> 
>> +    /* We cannot have more open zones than active zones. */
>> +    zlim->max_open_zones =
>> +                    min(zlim->max_open_zones, zlim->max_active_zones);
> 
> Same question about the capping as in patch 1, and same comment about
> the duplication as above.

Yes, we can remove this one too.

> 
>> +    if (zlim.max_open_zones >= zlim.mapped_nr_seq_zones)
>> +            lim->max_open_zones = 0;
>> +    else
>> +            lim->max_open_zones = zlim.max_open_zones;
>> +
>> +    if (zlim.max_active_zones >= zlim.mapped_nr_seq_zones)
>> +            lim->max_active_zones = 0;
>> +    else
>> +            lim->max_active_zones = zlim.max_active_zones;
> 
> And once more here.

Yep.

> 
> 

-- 
Damien Le Moal
Western Digital Research


Reply via email to