block: Introduce BLKGETZONESZ ioctl

Get a zoned block device zone size in number of 512 B sectors.
The zone size is always 0 for regular block devices.

Reviewed-by: Hannes Reinecke <hare@suse.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
Damien Le Moal 2018-10-12 19:08:45 +09:00 committed by Jens Axboe
parent 2e85fbaff3
commit 72cd87576d
2 changed files with 4 additions and 0 deletions

View File

@ -532,6 +532,8 @@ int blkdev_ioctl(struct block_device *bdev, fmode_t mode, unsigned cmd,
return blkdev_report_zones_ioctl(bdev, mode, cmd, arg); return blkdev_report_zones_ioctl(bdev, mode, cmd, arg);
case BLKRESETZONE: case BLKRESETZONE:
return blkdev_reset_zones_ioctl(bdev, mode, cmd, arg); return blkdev_reset_zones_ioctl(bdev, mode, cmd, arg);
case BLKGETZONESZ:
return put_uint(arg, bdev_zone_sectors(bdev));
case HDIO_GETGEO: case HDIO_GETGEO:
return blkdev_getgeo(bdev, argp); return blkdev_getgeo(bdev, argp);
case BLKRAGET: case BLKRAGET:

View File

@ -137,8 +137,10 @@ struct blk_zone_range {
* sector specified in the report request structure. * sector specified in the report request structure.
* @BLKRESETZONE: Reset the write pointer of the zones in the specified * @BLKRESETZONE: Reset the write pointer of the zones in the specified
* sector range. The sector range must be zone aligned. * sector range. The sector range must be zone aligned.
* @BLKGETZONESZ: Get the device zone size in number of 512 B sectors.
*/ */
#define BLKREPORTZONE _IOWR(0x12, 130, struct blk_zone_report) #define BLKREPORTZONE _IOWR(0x12, 130, struct blk_zone_report)
#define BLKRESETZONE _IOW(0x12, 131, struct blk_zone_range) #define BLKRESETZONE _IOW(0x12, 131, struct blk_zone_range)
#define BLKGETZONESZ _IOW(0x12, 132, __u32)
#endif /* _UAPI_BLKZONED_H */ #endif /* _UAPI_BLKZONED_H */