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

block: move the zone_resetall flag to queue_limits



Move the zone_resetall flag into the queue_limits feature field so that
it can be set atomically with the queue frozen.

Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarDamien Le Moal <dlemoal@kernel.org>
Reviewed-by: default avatarHannes Reinecke <hare@suse.de>
Link: https://lore.kernel.org/r/20240617060532.127975-24-hch@lst.de


Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent b1fc937a
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -91,7 +91,6 @@ static const char *const blk_queue_flag_name[] = {
	QUEUE_FLAG_NAME(REGISTERED),
	QUEUE_FLAG_NAME(QUIESCED),
	QUEUE_FLAG_NAME(PCI_P2PDMA),
	QUEUE_FLAG_NAME(ZONE_RESETALL),
	QUEUE_FLAG_NAME(RQ_ALLOC_TIME),
	QUEUE_FLAG_NAME(HCTX_ACTIVE),
	QUEUE_FLAG_NAME(SQ_SCHED),
+1 −2
Original line number Diff line number Diff line
@@ -158,7 +158,7 @@ int null_init_zoned_dev(struct nullb_device *dev,
		sector += dev->zone_size_sects;
	}

	lim->features |= BLK_FEAT_ZONED;
	lim->features |= BLK_FEAT_ZONED | BLK_FEAT_ZONE_RESETALL;
	lim->chunk_sectors = dev->zone_size_sects;
	lim->max_zone_append_sectors = dev->zone_append_max_sectors;
	lim->max_open_zones = dev->zone_max_open;
@@ -171,7 +171,6 @@ int null_register_zoned_dev(struct nullb *nullb)
	struct request_queue *q = nullb->q;
	struct gendisk *disk = nullb->disk;

	blk_queue_flag_set(QUEUE_FLAG_ZONE_RESETALL, q);
	disk->nr_zones = bdev_nr_zones(disk->part0);

	pr_info("%s: using %s zone append\n",
+1 −3
Original line number Diff line number Diff line
@@ -248,8 +248,6 @@ static int ublk_dev_param_zoned_validate(const struct ublk_device *ub)

static void ublk_dev_param_zoned_apply(struct ublk_device *ub)
{
	blk_queue_flag_set(QUEUE_FLAG_ZONE_RESETALL, ub->ub_disk->queue);

	ub->ub_disk->nr_zones = ublk_get_nr_zones(ub);
}

@@ -2196,7 +2194,7 @@ static int ublk_ctrl_start_dev(struct ublk_device *ub, struct io_uring_cmd *cmd)
		if (!IS_ENABLED(CONFIG_BLK_DEV_ZONED))
			return -EOPNOTSUPP;

		lim.features |= BLK_FEAT_ZONED;
		lim.features |= BLK_FEAT_ZONED | BLK_FEAT_ZONE_RESETALL;
		lim.max_active_zones = p->max_active_zones;
		lim.max_open_zones =  p->max_open_zones;
		lim.max_zone_append_sectors = p->max_zone_append_sectors;
+1 −2
Original line number Diff line number Diff line
@@ -728,7 +728,7 @@ static int virtblk_read_zoned_limits(struct virtio_blk *vblk,

	dev_dbg(&vdev->dev, "probing host-managed zoned device\n");

	lim->features |= BLK_FEAT_ZONED;
	lim->features |= BLK_FEAT_ZONED | BLK_FEAT_ZONE_RESETALL;

	virtio_cread(vdev, struct virtio_blk_config,
		     zoned.max_open_zones, &v);
@@ -1548,7 +1548,6 @@ static int virtblk_probe(struct virtio_device *vdev)
	 */
	if (IS_ENABLED(CONFIG_BLK_DEV_ZONED) &&
	    (lim.features & BLK_FEAT_ZONED)) {
		blk_queue_flag_set(QUEUE_FLAG_ZONE_RESETALL, vblk->disk->queue);
		err = blk_revalidate_disk_zones(vblk->disk);
		if (err)
			goto out_cleanup_disk;
+1 −2
Original line number Diff line number Diff line
@@ -108,13 +108,12 @@ int nvme_query_zone_info(struct nvme_ns *ns, unsigned lbaf,
void nvme_update_zone_info(struct nvme_ns *ns, struct queue_limits *lim,
		struct nvme_zone_info *zi)
{
	lim->features |= BLK_FEAT_ZONED;
	lim->features |= BLK_FEAT_ZONED | BLK_FEAT_ZONE_RESETALL;
	lim->max_open_zones = zi->max_open_zones;
	lim->max_active_zones = zi->max_active_zones;
	lim->max_zone_append_sectors = ns->ctrl->max_zone_append;
	lim->chunk_sectors = ns->head->zsze =
		nvme_lba_to_sect(ns->head, zi->zone_size);
	blk_queue_flag_set(QUEUE_FLAG_ZONE_RESETALL, ns->queue);
}

static void *nvme_zns_alloc_report_buffer(struct nvme_ns *ns,
Loading