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

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.deSigned-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 052e545c
...@@ -893,18 +893,19 @@ static bool disk_has_partitions(struct gendisk *disk) ...@@ -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 * @disk: the gendisk of the queue to configure
* @model: the zoned model to set * @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 * 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 zoned block device support is enabled (CONFIG_BLK_DEV_ZONED option).
* If @model specifies BLK_ZONED_HA (host aware), the effective model used * 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 * depends on CONFIG_BLK_DEV_ZONED settings and on the existence of partitions
* on the disk. * 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; struct request_queue *q = disk->queue;
...@@ -948,7 +949,7 @@ void blk_queue_set_zoned(struct gendisk *disk, enum blk_zoned_model model) ...@@ -948,7 +949,7 @@ void blk_queue_set_zoned(struct gendisk *disk, enum blk_zoned_model model)
blk_queue_clear_zone_settings(q); 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) int bdev_alignment_offset(struct block_device *bdev)
{ {
......
...@@ -330,7 +330,7 @@ static struct block_device *add_partition(struct gendisk *disk, int partno, ...@@ -330,7 +330,7 @@ static struct block_device *add_partition(struct gendisk *disk, int partno,
case BLK_ZONED_HA: case BLK_ZONED_HA:
pr_info("%s: disabling host aware zoned block device support due to partitions\n", pr_info("%s: disabling host aware zoned block device support due to partitions\n",
disk->disk_name); disk->disk_name);
blk_queue_set_zoned(disk, BLK_ZONED_NONE); disk_set_zoned(disk, BLK_ZONED_NONE);
break; break;
case BLK_ZONED_NONE: case BLK_ZONED_NONE:
break; break;
......
...@@ -159,7 +159,7 @@ int null_register_zoned_dev(struct nullb *nullb) ...@@ -159,7 +159,7 @@ int null_register_zoned_dev(struct nullb *nullb)
struct nullb_device *dev = nullb->dev; struct nullb_device *dev = nullb->dev;
struct request_queue *q = nullb->q; 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_flag_set(QUEUE_FLAG_ZONE_RESETALL, q);
blk_queue_required_elevator_features(q, ELEVATOR_F_ZBD_SEQ_WRITE); 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) ...@@ -109,7 +109,7 @@ int nvme_update_zone_info(struct nvme_ns *ns, unsigned lbaf)
goto free_data; 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_flag_set(QUEUE_FLAG_ZONE_RESETALL, q);
blk_queue_max_open_zones(q, le32_to_cpu(id->mor) + 1); blk_queue_max_open_zones(q, le32_to_cpu(id->mor) + 1);
blk_queue_max_active_zones(q, le32_to_cpu(id->mar) + 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) ...@@ -2934,15 +2934,15 @@ static void sd_read_block_characteristics(struct scsi_disk *sdkp)
if (sdkp->device->type == TYPE_ZBC) { if (sdkp->device->type == TYPE_ZBC) {
/* Host-managed */ /* Host-managed */
blk_queue_set_zoned(sdkp->disk, BLK_ZONED_HM); disk_set_zoned(sdkp->disk, BLK_ZONED_HM);
} else { } else {
sdkp->zoned = zoned; sdkp->zoned = zoned;
if (sdkp->zoned == 1) { if (sdkp->zoned == 1) {
/* Host-aware */ /* Host-aware */
blk_queue_set_zoned(sdkp->disk, BLK_ZONED_HA); disk_set_zoned(sdkp->disk, BLK_ZONED_HA);
} else { } else {
/* Regular disk or drive managed disk */ /* 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]) ...@@ -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. * This can happen for a host aware disk with partitions.
* The block device zone model was already cleared by * 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. * information and exit early.
*/ */
sd_zbc_free_zone_info(sdkp); sd_zbc_free_zone_info(sdkp);
......
...@@ -291,7 +291,7 @@ struct queue_limits { ...@@ -291,7 +291,7 @@ struct queue_limits {
typedef int (*report_zones_cb)(struct blk_zone *zone, unsigned int idx, typedef int (*report_zones_cb)(struct blk_zone *zone, unsigned int idx,
void *data); 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 #ifdef CONFIG_BLK_DEV_ZONED
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment