Commit 9b3c08b9 authored by Damien Le Moal's avatar Damien Le Moal Committed by Jens Axboe
Browse files

block: Simplify blk_revalidate_disk_zones() interface



The only user of blk_revalidate_disk_zones() second argument was the
SCSI disk driver (sd). Now that this driver does not require this
update_driver_data argument, remove it to simplify the interface of
blk_revalidate_disk_zones(). Also update the function kdoc comment to
be more accurate (i.e. there is no gendisk ->revalidate method).

Signed-off-by: default avatarDamien Le Moal <dlemoal@kernel.org>
Reviewed-by: default avatarHannes Reinecke <hare@suse.de>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarBart Van Assche <bvanassche@acm.org>
Tested-by: default avatarHans Holmberg <hans.holmberg@wdc.com>
Tested-by: default avatarDennis Maisenbacher <dennis.maisenbacher@wdc.com>
Reviewed-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
Link: https://lore.kernel.org/r/20240408014128.205141-21-dlemoal@kernel.org


Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 63b5385e
Loading
Loading
Loading
Loading
+7 −14
Original line number Diff line number Diff line
@@ -1713,21 +1713,17 @@ static int blk_revalidate_zone_cb(struct blk_zone *zone, unsigned int idx,
/**
 * blk_revalidate_disk_zones - (re)allocate and initialize zone bitmaps
 * @disk:	Target disk
 * @update_driver_data:	Callback to update driver data on the frozen disk
 *
 * Helper function for low-level device drivers to check and (re) allocate and
 * initialize a disk request queue zone bitmaps. This functions should normally
 * be called within the disk ->revalidate method for blk-mq based drivers.
 * Helper function for low-level device drivers to check, (re) allocate and
 * initialize resources used for managing zoned disks. This function should
 * normally be called by blk-mq based drivers when a zoned gendisk is probed
 * and when the zone configuration of the gendisk changes (e.g. after a format).
 * Before calling this function, the device driver must already have set the
 * device zone size (chunk_sector limit) and the max zone append limit.
 * BIO based drivers can also use this function as long as the device queue
 * can be safely frozen.
 * If the @update_driver_data callback function is not NULL, the callback is
 * executed with the device request queue frozen after all zones have been
 * checked.
 */
int blk_revalidate_disk_zones(struct gendisk *disk,
			      void (*update_driver_data)(struct gendisk *disk))
int blk_revalidate_disk_zones(struct gendisk *disk)
{
	struct request_queue *q = disk->queue;
	sector_t zone_sectors = q->limits.chunk_sectors;
@@ -1794,13 +1790,10 @@ int blk_revalidate_disk_zones(struct gendisk *disk,
	 * referencing the bitmaps).
	 */
	blk_mq_freeze_queue(q);
	if (ret > 0) {
	if (ret > 0)
		ret = disk_update_zone_resources(disk, &args);
		if (update_driver_data)
			update_driver_data(disk);
	} else {
	else
		pr_warn("%s: failed to revalidate zones\n", disk->disk_name);
	}
	if (ret)
		disk_free_zone_resources(disk);
	blk_mq_unfreeze_queue(q);
+1 −1
Original line number Diff line number Diff line
@@ -177,7 +177,7 @@ int null_register_zoned_dev(struct nullb *nullb)
		disk->disk_name,
		queue_emulates_zone_append(q) ? "emulated" : "native");

	return blk_revalidate_disk_zones(disk, NULL);
	return blk_revalidate_disk_zones(disk);
}

void null_free_zoned_dev(struct nullb_device *dev)
+1 −1
Original line number Diff line number Diff line
@@ -221,7 +221,7 @@ static int ublk_get_nr_zones(const struct ublk_device *ub)

static int ublk_revalidate_disk_zones(struct ublk_device *ub)
{
	return blk_revalidate_disk_zones(ub->ub_disk, NULL);
	return blk_revalidate_disk_zones(ub->ub_disk);
}

static int ublk_dev_param_zoned_validate(const struct ublk_device *ub)
+1 −1
Original line number Diff line number Diff line
@@ -1543,7 +1543,7 @@ static int virtblk_probe(struct virtio_device *vdev)
	 */
	if (IS_ENABLED(CONFIG_BLK_DEV_ZONED) && lim.zoned) {
		blk_queue_flag_set(QUEUE_FLAG_ZONE_RESETALL, vblk->disk->queue);
		err = blk_revalidate_disk_zones(vblk->disk, NULL);
		err = blk_revalidate_disk_zones(vblk->disk);
		if (err)
			goto out_cleanup_disk;
	}
+1 −1
Original line number Diff line number Diff line
@@ -169,7 +169,7 @@ static int dm_revalidate_zones(struct mapped_device *md, struct dm_table *t)
	 * our table for dm_blk_report_zones() to use directly.
	 */
	md->zone_revalidate_map = t;
	ret = blk_revalidate_disk_zones(disk, NULL);
	ret = blk_revalidate_disk_zones(disk);
	md->zone_revalidate_map = NULL;

	if (ret) {
Loading