• Damien Le Moal's avatar
    scsi: sd_zbc: Cleanup sd_zbc_alloc_report_buffer() · 23a50861
    Damien Le Moal authored
    There is no need to arbitrarily limit the size of a report zone to the
    number of zones defined by SD_ZBC_REPORT_MAX_ZONES. Rather, simply
    calculate the report buffer size needed for the requested number of
    zones without exceeding the device total number of zones. This buffer
    size limitation to the hardware maximum transfer size and page mapping
    capabilities is kept unchanged. Starting with this initial buffer size,
    the allocation is optimized by iterating over decreasing buffer size
    until the allocation succeeds (each iteration is allowed to fail fast
    using the __GFP_NORETRY flag). This ensures forward progress for zone
    reports and avoids failures of zones revalidation under memory pressure.
    
    While at it, also replace the hard coded 512 B sector size with the
    SECTOR_SIZE macro.
    Reviewed-by: default avatarHannes Reinecke <hare@suse.de>
    Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
    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>
    23a50861
sd_zbc.c 12.8 KB