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-03 21:36:56 -08:00
2017-02-21 11:51:42 -08:00
2017-02-08 10:51:24 -08:00
2017-02-21 11:51:42 -08:00
2016-12-14 10:49:33 -08:00
2017-03-03 21:36:56 -08:00
2017-02-21 11:51:42 -08:00
2015-04-17 10:13:56 -07:00
2015-11-25 22:08:55 -05:00
2014-07-17 22:07:37 +02:00
2016-05-10 22:01:07 -04:00
2015-11-09 17:11:57 -08:00
2014-11-24 16:13:16 +01:00
2015-11-09 16:32:14 -08:00
2017-03-15 13:37:10 -04:00
2016-02-25 21:10:53 -05:00
2016-11-08 17:29:46 -05:00
2016-01-27 20:36:10 +08:00
2016-01-27 20:36:10 +08:00
2014-07-17 22:07:35 +02:00
2016-02-23 21:27:02 -05:00
2016-11-28 15:51:31 -05:00
2017-02-21 11:51:42 -08:00
2017-02-21 11:51:42 -08:00
2017-01-31 14:00:34 -07:00
2016-11-14 13:16:42 -07:00
2017-03-15 10:44:19 -07:00
2016-10-18 19:49:11 -06:00
2016-02-23 21:27:02 -05:00
2014-07-17 22:07:39 +02:00
2014-11-12 11:15:57 +01:00
2015-11-18 11:59:09 -05:00
2016-02-23 21:27:02 -05:00
2017-02-21 11:51:42 -08:00