On Thu, Oct 24, 2019 at 03:50:06PM +0900, Damien Le Moal wrote: > Instead of relying on a zoned block device driver to allocate a buffer > for every execution of a report zones command execution, rely on the > block layer use of the device zone report queue limits to allocate a > buffer and keep it around when the device report_zones method is > executed in a loop, e.g. as in blk_revalidate_disk_zones(). > > This simplifies the code in the scsi sd_zbc driver as well as simplify > the addition of zone supports for upcoming new zoned device drivers. I wonder if we could just do away with the separate buffer entirely. As the SCSI zone size (and also ATA even if we don't directly talk to that) are intentionally the same size as the blk_zone (and the same true is for the only upcoming standard I know of) we can just rewrite each entry in-place(-ish) by reusing the same allocation. Depending on the detailed formate we have to copy a field our two onto the stack first, but it both avoids the extra allocation, and the whole queue limits infrastructure in the previous patch and should simply the code a lot.