Bart Van Assche 36e3cf2739 scsi: Avoid that SCSI queues get stuck
If a .queue_rq() function returns BLK_MQ_RQ_QUEUE_BUSY then the block
driver that implements that function is responsible for rerunning the
hardware queue once requests can be queued again successfully.

commit 52d7f1b5c2f3 ("blk-mq: Avoid that requeueing starts stopped
queues") removed the blk_mq_stop_hw_queue() call from scsi_queue_rq()
for the BLK_MQ_RQ_QUEUE_BUSY case. Hence change all calls to functions
that are intended to rerun a busy queue such that these examine all
hardware queues instead of only stopped queues.

Since no other functions than scsi_internal_device_block() and
scsi_internal_device_unblock() should ever stop or restart a SCSI
queue, change the blk_mq_delay_queue() call into a
blk_mq_delay_run_hw_queue() call.

Fixes: commit 52d7f1b5c2f3 ("blk-mq: Avoid that requeueing starts stopped queues")
Fixes: commit 7e79dadce222 ("blk-mq: stop hardware queue in blk_mq_delay_queue()")
Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com>
Cc: Martin K. Petersen <martin.petersen@oracle.com>
Cc: James Bottomley <James.Bottomley@HansenPartnership.com>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Hannes Reinecke <hare@suse.de>
Cc: Sagi Grimberg <sagi@grimberg.me>
Cc: Long Li <longli@microsoft.com>
Cc: K. Y. Srinivasan <kys@microsoft.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
2017-04-07 12:27:08 -06:00
..
2017-03-26 11:03:42 -07:00
2017-02-23 15:57:04 -08:00
2017-03-26 11:15:54 -07:00
2017-03-23 16:08:46 -07:00
2017-03-10 19:56:56 -08:00
2017-03-24 13:34:16 -07:00
2017-03-06 08:37:53 -08:00
2017-02-21 11:51:42 -08:00
2017-03-26 11:15:54 -07:00
2017-02-22 19:23:14 -08:00
2017-03-13 13:23:43 -07:00
2017-03-20 16:25:06 +01:00
2017-03-01 09:46:02 -08:00
2017-02-20 17:23:57 -08:00
2017-02-23 15:57:04 -08:00
2017-03-02 13:53:13 -08:00
2017-03-26 11:03:42 -07:00
2017-03-23 22:07:22 +01:00
2017-03-24 14:39:36 -07:00
2017-02-23 11:53:22 -08:00