Re: [PATCH 04/16] block: allow blk-zoned devices to have non-power-of-2 zone size

From: Pankaj Raghav
Date: Thu Apr 28 2022 - 15:04:32 EST


On 2022-04-28 01:37, Damien Le Moal wrote:
>> diff --git a/block/blk-core.c b/block/blk-core.c
>> index 937bb6b86331..850caf311064 100644
>> --- a/block/blk-core.c
>> +++ b/block/blk-core.c
>> @@ -634,8 +634,7 @@ static inline blk_status_t blk_check_zone_append(struct request_queue *q,
>> return BLK_STS_NOTSUPP;
>>
>> /* The bio sector must point to the start of a sequential zone */
>> - if (pos & (blk_queue_zone_sectors(q) - 1) ||
>> - !blk_queue_zone_is_seq(q, pos))
>> + if (!blk_queue_zone_aligned(q, pos) || !blk_queue_zone_is_seq(q, pos))
>
> blk_queue_zone_aligned() is a little confusing since "aligned" is also
> used for write-pointer aligned. I would rename this helper
>
> blk_queue_is_zone_start()
>
> or something like that.
>
That is a good idea and definitely a better name that
blk_queue_zone_aligned. I will fix it.

>> /*
>> @@ -489,14 +489,14 @@ static int blk_revalidate_zone_cb(struct blk_zone *zone, unsigned int idx,
>> * smaller last zone.
>> */
>> if (zone->start == 0) {
>> - if (zone->len == 0 || !is_power_of_2(zone->len)) {
>> - pr_warn("%s: Invalid zoned device with non power of two zone size (%llu)\n",
>> - disk->disk_name, zone->len);
>> + if (zone->len == 0) {
>> + pr_warn("%s: Invalid zoned device size",
>> + disk->disk_name);
>
> The message is weird now. Please change it to "Invalid zone size".
>
Ok.
> Also, the entire premise of this patch series is that it is hard for
> people to support the unusable sectors between zone capacity and zone end
> for drives with a zone capacity smaller than the zone size.
>
> Yet, here you do not check that zone capacity == zone size for drives that
> do not have a zone size equal to a power of 2 number of sectors. This
> means that we can still have drives with ZC < ZS AND ZS not equal to a
> power of 2. So from the point of view of your arguments, no gains at all.
> Any thoughts on this ?
>
That is a good point. Instead of implicitly assuming npo2 drives to have
ZC == ZS, it is better to be explicit during bringup. Thanks. As Luis
mentioned, I will add this condition in the next revision.