Many places in the filesystem for zoned devices open code this function to find the zone number for a given sector with power of 2 assumption. This generic helper can be used to calculate zone number for a given sector in a block device This helper internally uses blk_queue_zone_no to find the zone number. Reviewed-by: Luis Chamberlain <mcgrof@xxxxxxxxxx> Signed-off-by: Pankaj Raghav <p.raghav@xxxxxxxxxxx> --- include/linux/blkdev.h | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index f8f2d2998afb..55293e0a8702 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -1392,6 +1392,15 @@ static inline bool bdev_zone_aligned(struct block_device *bdev, sector_t sec) return false; } +static inline unsigned int bdev_zone_no(struct block_device *bdev, sector_t sec) +{ + struct request_queue *q = bdev_get_queue(bdev); + + if (q) + return blk_queue_zone_no(q, sec); + return 0; +} + static inline unsigned int bdev_max_open_zones(struct block_device *bdev) { struct request_queue *q = bdev_get_queue(bdev); -- 2.25.1