Martin,
Any comment on this patch ?
On 2019/01/30 7:55, Damien Le Moal wrote:
> Commit bf5054569653 ("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: bf5054569653 ("block: Introduce blk_revalidate_disk_zones()")
> Cc: [email protected]
> Signed-off-by: Damien Le Moal <[email protected]>
> ---
> drivers/scsi/sd_zbc.c | 12 ++++++++----
> 1 file changed, 8 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/scsi/sd_zbc.c b/drivers/scsi/sd_zbc.c
> index 83365b29a4d8..fff86940388b 100644
> --- a/drivers/scsi/sd_zbc.c
> +++ b/drivers/scsi/sd_zbc.c
> @@ -462,12 +462,16 @@ int sd_zbc_read_zones(struct scsi_disk *sdkp, unsigned
> char *buf)
> sdkp->device->use_10_for_rw = 0;
>
> /*
> - * If something changed, revalidate the disk zone bitmaps once we have
> - * the capacity, that is on the second revalidate execution during disk
> - * scan and always during normal revalidate.
> + * Revalidate the disk zone bitmaps once the block device capacity is
> + * set on the second revalidate execution during disk scan and if
> + * 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;
> + }
> +
> if (sdkp->zone_blocks != zone_blocks ||
> sdkp->nr_zones != nr_zones ||
> disk->queue->nr_zones != nr_zones) {
>
--
Damien Le Moal
Western Digital Research