block: Introduce BLKGETNRZONES ioctl
authorDamien Le Moal <damien.lemoal@wdc.com>
Fri, 12 Oct 2018 10:08:46 +0000 (19:08 +0900)
committerJens Axboe <axboe@kernel.dk>
Thu, 25 Oct 2018 17:17:40 +0000 (11:17 -0600)
Get a zoned block device total number of zones. The device can be a
partition of the whole device. The number of zones 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>
block/ioctl.c
include/uapi/linux/blkzoned.h

index f6d2c6f..4825c78 100644 (file)
@@ -534,6 +534,8 @@ int blkdev_ioctl(struct block_device *bdev, fmode_t mode, unsigned cmd,
                return blkdev_reset_zones_ioctl(bdev, mode, cmd, arg);
        case BLKGETZONESZ:
                return put_uint(arg, bdev_zone_sectors(bdev));
+       case BLKGETNRZONES:
+               return put_uint(arg, blkdev_nr_zones(bdev));
        case HDIO_GETGEO:
                return blkdev_getgeo(bdev, argp);
        case BLKRAGET:
index 281ac60..8f08ff9 100644 (file)
@@ -142,5 +142,6 @@ struct blk_zone_range {
 #define BLKREPORTZONE  _IOWR(0x12, 130, struct blk_zone_report)
 #define BLKRESETZONE   _IOW(0x12, 131, struct blk_zone_range)
 #define BLKGETZONESZ   _IOW(0x12, 132, __u32)
+#define BLKGETNRZONES  _IOW(0x12, 133, __u32)
 
 #endif /* _UAPI_BLKZONED_H */