Commit 88fc41c4 authored by Damien Le Moal's avatar Damien Le Moal Committed by Martin K. Petersen

scsi: sd_zbc: Fix zone information messages

Commit bf505456 ("block: Introduce blk_revalidate_disk_zones()")
inadvertently broke the message output of sd_zbc_print_zones() because the
zone information initialization of the scsi disk structure was moved to the
second scan run while sd_zbc_print_zones() is called on the first
scan. This leads to the following incorrect message to be printed for any
ZBC or ZAC zoned disks.

"...[sdX] 4294967295 zones of 0 logical blocks + 1 runt zone"

Fix this by initializing sdkp zone size and number of zones early on the
first scan. This does not impact the execution of
blk_revalidate_zones(). This functions is still called only once the block
device capacity is set on the second revalidate run on boot, or if the disk
zone configuration changed (i.e. the disk changed).

Fixes: bf505456 ("block: Introduce blk_revalidate_disk_zones()")
Cc: stable@vger.kernel.org
Signed-off-by: default avatarDamien Le Moal <damien.lemoal@wdc.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent b6cd7f34
...@@ -462,12 +462,16 @@ int sd_zbc_read_zones(struct scsi_disk *sdkp, unsigned char *buf) ...@@ -462,12 +462,16 @@ int sd_zbc_read_zones(struct scsi_disk *sdkp, unsigned char *buf)
sdkp->device->use_10_for_rw = 0; sdkp->device->use_10_for_rw = 0;
/* /*
* If something changed, revalidate the disk zone bitmaps once we have * Revalidate the disk zone bitmaps once the block device capacity is
* the capacity, that is on the second revalidate execution during disk * set on the second revalidate execution during disk scan and if
* scan and always during normal revalidate. * something changed when executing a normal revalidate.
*/ */
if (sdkp->first_scan) if (sdkp->first_scan) {
sdkp->zone_blocks = zone_blocks;
sdkp->nr_zones = nr_zones;
return 0; return 0;
}
if (sdkp->zone_blocks != zone_blocks || if (sdkp->zone_blocks != zone_blocks ||
sdkp->nr_zones != nr_zones || sdkp->nr_zones != nr_zones ||
disk->queue->nr_zones != nr_zones) { disk->queue->nr_zones != nr_zones) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment