Commit 6b2bd274 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Jens Axboe
Browse files

block: pass a gendisk to blk_queue_set_zoned



Prepare for storing the zone related field in struct gendisk instead
of struct request_queue.

Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarChaitanya Kulkarni <kch@nvidia.com>
Reviewed-by: default avatarDamien Le Moal <damien.lemoal@opensource.wdc.com>
Reviewed-by: default avatarJohannes Thumshirn <johannes.thumshirn@wdc.com>
Link: https://lore.kernel.org/r/20220706070350.1703384-7-hch@lst.de


Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 052e545c
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -893,18 +893,19 @@ static bool disk_has_partitions(struct gendisk *disk)
}

/**
 * blk_queue_set_zoned - configure a disk queue zoned model.
 * disk_set_zoned - configure the zoned model for a disk
 * @disk:	the gendisk of the queue to configure
 * @model:	the zoned model to set
 *
 * Set the zoned model of the request queue of @disk according to @model.
 * Set the zoned model of @disk to @model.
 *
 * When @model is BLK_ZONED_HM (host managed), this should be called only
 * if zoned block device support is enabled (CONFIG_BLK_DEV_ZONED option).
 * If @model specifies BLK_ZONED_HA (host aware), the effective model used
 * depends on CONFIG_BLK_DEV_ZONED settings and on the existence of partitions
 * on the disk.
 */
void blk_queue_set_zoned(struct gendisk *disk, enum blk_zoned_model model)
void disk_set_zoned(struct gendisk *disk, enum blk_zoned_model model)
{
	struct request_queue *q = disk->queue;

@@ -948,7 +949,7 @@ void blk_queue_set_zoned(struct gendisk *disk, enum blk_zoned_model model)
		blk_queue_clear_zone_settings(q);
	}
}
EXPORT_SYMBOL_GPL(blk_queue_set_zoned);
EXPORT_SYMBOL_GPL(disk_set_zoned);

int bdev_alignment_offset(struct block_device *bdev)
{
+1 −1
Original line number Diff line number Diff line
@@ -330,7 +330,7 @@ static struct block_device *add_partition(struct gendisk *disk, int partno,
	case BLK_ZONED_HA:
		pr_info("%s: disabling host aware zoned block device support due to partitions\n",
			disk->disk_name);
		blk_queue_set_zoned(disk, BLK_ZONED_NONE);
		disk_set_zoned(disk, BLK_ZONED_NONE);
		break;
	case BLK_ZONED_NONE:
		break;
+1 −1
Original line number Diff line number Diff line
@@ -159,7 +159,7 @@ int null_register_zoned_dev(struct nullb *nullb)
	struct nullb_device *dev = nullb->dev;
	struct request_queue *q = nullb->q;

	blk_queue_set_zoned(nullb->disk, BLK_ZONED_HM);
	disk_set_zoned(nullb->disk, BLK_ZONED_HM);
	blk_queue_flag_set(QUEUE_FLAG_ZONE_RESETALL, q);
	blk_queue_required_elevator_features(q, ELEVATOR_F_ZBD_SEQ_WRITE);

+1 −1
Original line number Diff line number Diff line
@@ -109,7 +109,7 @@ int nvme_update_zone_info(struct nvme_ns *ns, unsigned lbaf)
		goto free_data;
	}

	blk_queue_set_zoned(ns->disk, BLK_ZONED_HM);
	disk_set_zoned(ns->disk, BLK_ZONED_HM);
	blk_queue_flag_set(QUEUE_FLAG_ZONE_RESETALL, q);
	blk_queue_max_open_zones(q, le32_to_cpu(id->mor) + 1);
	blk_queue_max_active_zones(q, le32_to_cpu(id->mar) + 1);
+3 −3
Original line number Diff line number Diff line
@@ -2934,15 +2934,15 @@ static void sd_read_block_characteristics(struct scsi_disk *sdkp)

	if (sdkp->device->type == TYPE_ZBC) {
		/* Host-managed */
		blk_queue_set_zoned(sdkp->disk, BLK_ZONED_HM);
		disk_set_zoned(sdkp->disk, BLK_ZONED_HM);
	} else {
		sdkp->zoned = zoned;
		if (sdkp->zoned == 1) {
			/* Host-aware */
			blk_queue_set_zoned(sdkp->disk, BLK_ZONED_HA);
			disk_set_zoned(sdkp->disk, BLK_ZONED_HA);
		} else {
			/* Regular disk or drive managed disk */
			blk_queue_set_zoned(sdkp->disk, BLK_ZONED_NONE);
			disk_set_zoned(sdkp->disk, BLK_ZONED_NONE);
		}
	}

Loading