[PATCH 5/5] sd: only call disk_clear_zoned when needed

Christoph Hellwig
2023-12-17T16:54:20Z

disk_clear_zoned only needs to be called when a device reported zone
managed mode first and we clear it. Add a check so that disk_clear_zoned
isn't called on devices that were never zoned.

This avoids a fairly expensive queue freezing when revalidating
conventional devices.

Signed-off-by: Christoph Hellwig <hch@lst.de>
---
drivers/scsi/sd.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
index dbed075cdb981a..8c8ac5cd1833b4 100644
--- a/drivers/scsi/sd.c
+++ b/drivers/scsi/sd.c
@@ -3149,7 +3149,7 @@ static void sd_read_block_characteristics(struct scsi_disk *sdkp)
* the device physical block size.
*/
blk_queue_zone_write_granularity(q, sdkp->physical_block_size);
- } else {
+ } else if (blk_queue_is_zoned(q)) {
/*
* Anything else. This includes host-aware device that we treat
* as conventional.
--
2.39.2