Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

scsi: block: nullblk: Set zone limits before revalidating zones

In null_register_zoned_dev(), execute blk_queue_chunk_sectors() and
blk_queue_max_zone_append_sectors() to respectively set the zoned device
zone size and maximum zone append sector limit before executing
blk_revalidate_disk_zones(). This is to allow the block layer zone
reavlidation to check these device characteristics prior to checking all
zones of the device.

Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
Link: https://lore.kernel.org/r/20230703024812.76778-4-dlemoal@kernel.org
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>

authored by

Damien Le Moal and committed by
Martin K. Petersen
a442b899 d226b0a2

+5 -11
+5 -11
drivers/block/null_blk/zoned.c
··· 162 162 disk_set_zoned(nullb->disk, BLK_ZONED_HM); 163 163 blk_queue_flag_set(QUEUE_FLAG_ZONE_RESETALL, q); 164 164 blk_queue_required_elevator_features(q, ELEVATOR_F_ZBD_SEQ_WRITE); 165 - 166 - if (queue_is_mq(q)) { 167 - int ret = blk_revalidate_disk_zones(nullb->disk, NULL); 168 - 169 - if (ret) 170 - return ret; 171 - } else { 172 - blk_queue_chunk_sectors(q, dev->zone_size_sects); 173 - nullb->disk->nr_zones = bdev_nr_zones(nullb->disk->part0); 174 - } 175 - 165 + blk_queue_chunk_sectors(q, dev->zone_size_sects); 166 + nullb->disk->nr_zones = bdev_nr_zones(nullb->disk->part0); 176 167 blk_queue_max_zone_append_sectors(q, dev->zone_size_sects); 177 168 disk_set_max_open_zones(nullb->disk, dev->zone_max_open); 178 169 disk_set_max_active_zones(nullb->disk, dev->zone_max_active); 170 + 171 + if (queue_is_mq(q)) 172 + return blk_revalidate_disk_zones(nullb->disk, NULL); 179 173 180 174 return 0; 181 175 }