• C
    block: add a report_zones method · e76239a3
    Christoph Hellwig 提交于
    Dispatching a report zones command through the request queue is a major
    pain due to the command reply payload rewriting necessary. Given that
    blkdev_report_zones() is executing everything synchronously, implement
    report zones as a block device file operation instead, allowing major
    simplification of the code in many places.
    
    sd, null-blk, dm-linear and dm-flakey being the only block device
    drivers supporting exposing zoned block devices, these drivers are
    modified to provide the device side implementation of the
    report_zones() block device file operation.
    
    For device mappers, a new report_zones() target type operation is
    defined so that the upper block layer calls blkdev_report_zones() can
    be propagated down to the underlying devices of the dm targets.
    Implementation for this new operation is added to the dm-linear and
    dm-flakey targets.
    Reviewed-by: NHannes Reinecke <hare@suse.com>
    Signed-off-by: NChristoph Hellwig <hch@lst.de>
    [Damien]
    * Changed method block_device argument to gendisk
    * Various bug fixes and improvements
    * Added support for null_blk, dm-linear and dm-flakey.
    Reviewed-by: NMartin K. Petersen <martin.petersen@oracle.com>
    Reviewed-by: NMike Snitzer <snitzer@redhat.com>
    Signed-off-by: NDamien Le Moal <damien.lemoal@wdc.com>
    Signed-off-by: NJens Axboe <axboe@kernel.dk>
    e76239a3
null_blk_main.c 42.9 KB