• Hannes Reinecke's avatar
    sd: Implement support for ZBC devices · 89d94756
    Hannes Reinecke authored
    Implement ZBC support functions to setup zoned disks, both
    host-managed and host-aware models. Only zoned disks that satisfy
    the following conditions are supported:
    1) All zones are the same size, with the exception of an eventual
       last smaller runt zone.
    2) For host-managed disks, reads are unrestricted (reads are not
       failed due to zone or write pointer alignement constraints).
    Zoned disks that do not satisfy these 2 conditions are setup with
    a capacity of 0 to prevent their use.
    
    The function sd_zbc_read_zones, called from sd_revalidate_disk,
    checks that the device satisfies the above two constraints. This
    function may also change the disk capacity previously set by
    sd_read_capacity for devices reporting only the capacity of
    conventional zones at the beginning of the LBA range (i.e. devices
    reporting rc_basis set to 0).
    
    The capacity message output was moved out of sd_read_capacity into
    a new function sd_print_capacity to include this eventual capacity
    change by sd_zbc_read_zones. This new function also includes a call
    to sd_zbc_print_zones to display the number of zones and zone size
    of the device.
    Signed-off-by: Hannes Reinecke's avatarHannes Reinecke <hare@suse.de>
    
    [Damien: * Removed zone cache support
             * Removed mapping of discard to reset write pointer command
             * Modified sd_zbc_read_zones to include checks that the
               device satisfies the kernel constraints
             * Implemeted REPORT ZONES setup and post-processing based
               on code from Shaun Tancheff <shaun.tancheff@seagate.com>
             * Removed confusing use of 512B sector units in functions
               interface]
    Signed-off-by: default avatarDamien Le Moal <damien.lemoal@hgst.com>
    Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
    Reviewed-by: default avatarShaun Tancheff <shaun.tancheff@seagate.com>
    Tested-by: default avatarShaun Tancheff <shaun.tancheff@seagate.com>
    Acked-by: Martin K. Petersen's avatarMartin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: default avatarJens Axboe <axboe@fb.com>
    89d94756
sd.h 8.01 KB