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: Christoph Hellwig <hch@lst.de> Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com> Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com> Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com> Link: https://lore.kernel.org/r/20220706070350.1703384-7-hch@lst.de Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
052e545c92
commit
6b2bd27474
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -929,7 +929,7 @@ int sd_zbc_read_zones(struct scsi_disk *sdkp, u8 buf[SD_BUF_SIZE])
|
|||
/*
|
||||
* This can happen for a host aware disk with partitions.
|
||||
* The block device zone model was already cleared by
|
||||
* blk_queue_set_zoned(). Only free the scsi disk zone
|
||||
* disk_set_zoned(). Only free the scsi disk zone
|
||||
* information and exit early.
|
||||
*/
|
||||
sd_zbc_free_zone_info(sdkp);
|
||||
|
|
|
@ -291,7 +291,7 @@ struct queue_limits {
|
|||
typedef int (*report_zones_cb)(struct blk_zone *zone, unsigned int idx,
|
||||
void *data);
|
||||
|
||||
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);
|
||||
|
||||
#ifdef CONFIG_BLK_DEV_ZONED
|
||||
|
||||
|
|
Loading…
Reference in New Issue