• Damien Le Moal's avatar
    scsi: sd_zbc: Reduce boot device scan and revalidate time · d2e428e4
    Damien Le Moal authored
    Handling checks of ZBC device capacity using the max_lba field of the
    REPORT ZONES command reply for disks with rc_basis == 0 can be done
    using the same report zones command reply used to check the "same"
    field.
    
    Avoid executing a report zones command solely to check the disk capacity
    by merging sd_zbc_check_capacity() into sd_zbc_check_zone_size() and
    renaming that function to sd_zbc_check_zones(). This removes a costly
    execution of a full report zones command and so reduces device scan
    duration at boot time as well as the duration of disk revalidate calls.
    
    Furthermore, setting the partial report bit in the REPORT ZONES command
    cdb can significantly reduce this command execution time as the device
    does not have to count and report the total number of zones that could
    be reported assuming a large enough reply buffer. A non-partial zone
    report is necessary only for the first execution of report zones used to
    check the same field value (to ensure that this value applies to all
    zones of the disk). All other calls to sd_zbc_report_zones() can use a
    partial report to reduce execution time.
    
    Using a 14 TB ZBC disk, these simple changes reduce device scan time at
    boot from about 3.5s down to about 900ms. Disk revalidate times are also
    reduced from about 450ms down to 230ms.
    Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
    Reviewed-by: default avatarHannes Reinecke <hare@suse.com>
    Acked-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: default avatarDamien Le Moal <damien.lemoal@wdc.com>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    d2e428e4
sd_zbc.c 18.5 KB