> +struct blk_zoned {
> + unsigned int nr_zones;
> + unsigned long *seq_zones;
> +};
> +
> struct blk_zone_report_hdr {
> unsigned int nr_zones;
> u8 padding[60];
> @@ -492,6 +497,10 @@ struct request_queue {
> struct blk_integrity integrity;
> #endif /* CONFIG_BLK_DEV_INTEGRITY */
>
> +#ifdef CONFIG_BLK_DEV_ZONED
> + struct blk_zoned zoned;
> +#endif
I'd prefer to just add the two fields direct to struct request_queue
instead of the container structure.
> +static inline unsigned int blk_queue_nr_zones(struct request_queue *q)
> +{
> + return blk_queue_is_zoned(q) ? q->zoned.nr_zones : 0;
> +}
I don't think this is going to compile without CONFIG_BLK_DEV_ZONED,
we'd either need two versions of it, or just always add nr_zones to
the request queue.
With nr_zones always present we could then remove the first check,
too as it would always be initialized to zero.