Messages in this thread | | | Date | Wed, 27 Jul 2022 16:16:30 -0700 | Subject | Re: [PATCH v8 02/11] block: allow blk-zoned devices to have non-power-of-2 zone size | From | Bart Van Assche <> |
| |
On 7/27/22 09:22, Pankaj Raghav wrote: > Checking if a given sector is aligned to a zone is a common > operation that is performed for zoned devices. Add > bdev_is_zone_start helper to check for this instead of opencoding it > everywhere.
I can't find the bdev_is_zone_start() function in this patch?
> To make this work bdev_get_queue(), bdev_zone_sectors() and > bdev_is_zoned() are moved earlier without modifications.
Can that change perhaps be isolated into a separate patch?
> diff --git a/block/blk-core.c b/block/blk-core.c > index 3d286a256d3d..1f7e9a90e198 100644 > --- a/block/blk-core.c > +++ b/block/blk-core.c > @@ -570,7 +570,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 (bio->bi_iter.bi_sector & (bdev_zone_sectors(bio->bi_bdev) - 1) || > + if (!bdev_is_zone_aligned(bio->bi_bdev, bio->bi_iter.bi_sector) || > !bio_zone_is_seq(bio)) > return BLK_STS_IOERR;
The bdev_is_zone_start() name seems more clear to me than bdev_is_zone_aligned(). Has there already been a discussion about which name to use for this function?
> + /* > + * Non power-of-2 zone size support was added to remove the > + * gap between zone capacity and zone size. Though it is technically > + * possible to have gaps in a non power-of-2 device, Linux requires > + * the zone size to be equal to zone capacity for non power-of-2 > + * zoned devices. > + */ > + if (!is_power_of_2(zone->len) && zone->capacity < zone->len) { > + pr_warn("%s: Invalid zone capacity for non power of 2 zone size", > + disk->disk_name);
Given the severity of this error, shouldn't the zone capacity and length be reported in the error message?
Thanks,
Bart.
| |