scsi: core: Don't wait for quiesce in scsi_device_block()
authorMartin Wilck <mwilck@suse.com>
Wed, 14 Jun 2023 10:36:14 +0000 (12:36 +0200)
committerMartin K. Petersen <martin.petersen@oracle.com>
Fri, 16 Jun 2023 16:19:59 +0000 (12:19 -0400)
commite20fff8a1f4940f46be888bd175412c2e3e64e96
tree7d20595a0a7105e59305c81d1010f738d55c0d28
parentd7035b73a73a79a1dc991fad0ee5f784559e81ed
scsi: core: Don't wait for quiesce in scsi_device_block()

scsi_device_block() is only called from scsi_target_block(), which calls it
repeatedly for every child device. For targets with many devices, waiting
for every queue to quiesce may cause a substantial delay (we measured more
than 100s delay for blocking a FC rport with 2048 LUNs).

Just call blk_mq_wait_quiesce_done() once from scsi_target_block() after
stopping all queues.

Signed-off-by: Martin Wilck <mwilck@suse.com>
Link: https://lore.kernel.org/r/20230614103616.31857-6-mwilck@suse.com
Reviewed-by: Hannes Reinecke <hare@suse.de>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/scsi_lib.c