[SCSI] Fix dm-multipath starvation when scsi host is busy
authorJun'ichi Nomura <j-nomura@ce.jp.nec.com>
Tue, 22 May 2012 09:57:17 +0000 (18:57 +0900)
committerJames Bottomley <JBottomley@Parallels.com>
Wed, 23 May 2012 08:34:17 +0000 (09:34 +0100)
commitb7e94a1686c5daef4f649f7f4f839cc294f07710
treee50da550b9b6d7805df8e1f6f3e93b3b48417861
parent4886b1afee5aaccc2fb3202620a5608caf0c9284
[SCSI] Fix dm-multipath starvation when scsi host is busy

block congestion control doesn't have any concept of fairness across
multiple queues.  This means that if SCSI reports the host as busy in
the queue congestion control it can result in an unfair starvation
situation in dm-mp if there are multiple multipath devices on the same
host.  For example:
http://www.redhat.com/archives/dm-devel/2012-May/msg00123.html

The fix for this is to report only the sdev busy state (and ignore the
host busy state) in the block congestion control call back.
The host is still congested, but the SCSI subsystem will sort out the
congestion in a fair way because it knows the relation between the
queues and the host.

[jejb: fixed up trailing whitespace]
Reported-by: Bernd Schubert <bernd.schubert@itwm.fraunhofer.de>
Tested-by: Bernd Schubert <bernd.schubert@itwm.fraunhofer.de>
Signed-off-by: Jun'ichi Nomura <j-nomura@ce.jp.nec.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
drivers/scsi/scsi_lib.c