]> www.infradead.org Git - users/hch/block.git/commitdiff
sd: cleanup zoned queue limits initialization
authorChristoph Hellwig <hch@lst.de>
Fri, 31 May 2024 07:48:05 +0000 (09:48 +0200)
committerJens Axboe <axboe@kernel.dk>
Fri, 14 Jun 2024 16:19:44 +0000 (10:19 -0600)
Consolidate setting zone-related queue limits in sd_zbc_read_zones
instead of splitting them between sd_zbc_revalidate_zones and
sd_zbc_read_zones, and move the early_zone_information initialization
in sd_zbc_read_zones above setting up the queue limits.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: Damien Le Moal <dlemoal@kernel.org>
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
Link: https://lore.kernel.org/r/20240531074837.1648501-11-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/scsi/sd_zbc.c

index 806036e48abeda9520c0b51596dee6fc86e0c15e..1c24c844e8d178038a4d806a6c0bdc3260b4398b 100644 (file)
@@ -565,12 +565,6 @@ int sd_zbc_revalidate_zones(struct scsi_disk *sdkp)
        sdkp->zone_info.zone_blocks = zone_blocks;
        sdkp->zone_info.nr_zones = nr_zones;
 
-       blk_queue_chunk_sectors(q,
-                       logical_to_sectors(sdkp->device, zone_blocks));
-
-       /* Enable block layer zone append emulation */
-       blk_queue_max_zone_append_sectors(q, 0);
-
        flags = memalloc_noio_save();
        ret = blk_revalidate_disk_zones(disk);
        memalloc_noio_restore(flags);
@@ -625,6 +619,10 @@ int sd_zbc_read_zones(struct scsi_disk *sdkp, u8 buf[SD_BUF_SIZE])
        if (ret != 0)
                goto err;
 
+       nr_zones = round_up(sdkp->capacity, zone_blocks) >> ilog2(zone_blocks);
+       sdkp->early_zone_info.nr_zones = nr_zones;
+       sdkp->early_zone_info.zone_blocks = zone_blocks;
+
        /* The drive satisfies the kernel restrictions: set it up */
        blk_queue_flag_set(QUEUE_FLAG_ZONE_RESETALL, q);
        if (sdkp->zones_max_open == U32_MAX)
@@ -632,10 +630,10 @@ int sd_zbc_read_zones(struct scsi_disk *sdkp, u8 buf[SD_BUF_SIZE])
        else
                disk_set_max_open_zones(disk, sdkp->zones_max_open);
        disk_set_max_active_zones(disk, 0);
-       nr_zones = round_up(sdkp->capacity, zone_blocks) >> ilog2(zone_blocks);
-
-       sdkp->early_zone_info.nr_zones = nr_zones;
-       sdkp->early_zone_info.zone_blocks = zone_blocks;
+       blk_queue_chunk_sectors(q,
+                       logical_to_sectors(sdkp->device, zone_blocks));
+       /* Enable block layer zone append emulation */
+       blk_queue_max_zone_append_sectors(q, 0);
 
        return 0;