Lines Matching refs:bdev
89 unsigned int blkdev_nr_zones(struct block_device *bdev) in blkdev_nr_zones() argument
91 struct request_queue *q = bdev_get_queue(bdev); in blkdev_nr_zones()
96 return __blkdev_nr_zones(q, bdev->bd_part->nr_sects); in blkdev_nr_zones()
104 static bool blkdev_report_zone(struct block_device *bdev, struct blk_zone *rep) in blkdev_report_zone() argument
106 sector_t offset = get_start_sect(bdev); in blkdev_report_zone()
112 if (rep->start + rep->len > bdev->bd_part->nr_sects) in blkdev_report_zone()
163 int blkdev_report_zones(struct block_device *bdev, sector_t sector, in blkdev_report_zones() argument
166 struct request_queue *q = bdev_get_queue(bdev); in blkdev_report_zones()
178 if (WARN_ON_ONCE(!bdev->bd_disk->fops->report_zones)) in blkdev_report_zones()
181 if (!*nr_zones || sector >= bdev->bd_part->nr_sects) { in blkdev_report_zones()
187 __blkdev_nr_zones(q, bdev->bd_part->nr_sects - sector)); in blkdev_report_zones()
188 ret = blk_report_zones(bdev->bd_disk, get_start_sect(bdev) + sector, in blkdev_report_zones()
194 if (!blkdev_report_zone(bdev, zones)) in blkdev_report_zones()
209 static int __blkdev_reset_all_zones(struct block_device *bdev, gfp_t gfp_mask) in __blkdev_reset_all_zones() argument
215 bio_set_dev(bio, bdev); in __blkdev_reset_all_zones()
224 static inline bool blkdev_allow_reset_all_zones(struct block_device *bdev, in blkdev_allow_reset_all_zones() argument
227 if (!blk_queue_zone_resetall(bdev_get_queue(bdev))) in blkdev_allow_reset_all_zones()
230 if (nr_sectors != part_nr_sects_read(bdev->bd_part)) in blkdev_allow_reset_all_zones()
237 return get_start_sect(bdev) == 0 && in blkdev_allow_reset_all_zones()
238 part_nr_sects_read(bdev->bd_part) == get_capacity(bdev->bd_disk); in blkdev_allow_reset_all_zones()
253 int blkdev_reset_zones(struct block_device *bdev, in blkdev_reset_zones() argument
257 struct request_queue *q = bdev_get_queue(bdev); in blkdev_reset_zones()
267 if (bdev_read_only(bdev)) in blkdev_reset_zones()
270 if (!nr_sectors || end_sector > bdev->bd_part->nr_sects) in blkdev_reset_zones()
274 if (blkdev_allow_reset_all_zones(bdev, nr_sectors)) in blkdev_reset_zones()
275 return __blkdev_reset_all_zones(bdev, gfp_mask); in blkdev_reset_zones()
283 end_sector != bdev->bd_part->nr_sects) in blkdev_reset_zones()
291 bio_set_dev(bio, bdev); in blkdev_reset_zones()
314 int blkdev_report_zones_ioctl(struct block_device *bdev, fmode_t mode, in blkdev_report_zones_ioctl() argument
326 q = bdev_get_queue(bdev); in blkdev_report_zones_ioctl()
342 rep.nr_zones = min(blkdev_nr_zones(bdev), rep.nr_zones); in blkdev_report_zones_ioctl()
349 ret = blkdev_report_zones(bdev, rep.sector, zones, &rep.nr_zones); in blkdev_report_zones_ioctl()
374 int blkdev_reset_zones_ioctl(struct block_device *bdev, fmode_t mode, in blkdev_reset_zones_ioctl() argument
384 q = bdev_get_queue(bdev); in blkdev_reset_zones_ioctl()
400 return blkdev_reset_zones(bdev, zrange.sector, zrange.nr_sectors, in blkdev_reset_zones_ioctl()