From b7ec06a6468376f6bcb6b5ab3cc53532d94fa811 Mon Sep 17 00:00:00 2001 From: Jun'ichi Nomura Date: Tue, 22 May 2012 18:57:17 +0900 Subject: [PATCH] --- yaml --- r: 309651 b: refs/heads/master c: b7e94a1686c5daef4f649f7f4f839cc294f07710 h: refs/heads/master i: 309649: ece4e738f0401ccbe8896cbaa91ef2b5651c20de 309647: 09ebd3cba280f2ed5cbd9a6d25b63d7da53dbc03 v: v3 --- [refs] | 2 +- trunk/drivers/scsi/scsi_lib.c | 11 +++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index 394f21c91fd1..ff2b360dd57d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4886b1afee5aaccc2fb3202620a5608caf0c9284 +refs/heads/master: b7e94a1686c5daef4f649f7f4f839cc294f07710 diff --git a/trunk/drivers/scsi/scsi_lib.c b/trunk/drivers/scsi/scsi_lib.c index 62ddfd31d4ce..6dfb9785d345 100644 --- a/trunk/drivers/scsi/scsi_lib.c +++ b/trunk/drivers/scsi/scsi_lib.c @@ -1378,16 +1378,19 @@ static int scsi_lld_busy(struct request_queue *q) { struct scsi_device *sdev = q->queuedata; struct Scsi_Host *shost; - struct scsi_target *starget; if (!sdev) return 0; shost = sdev->host; - starget = scsi_target(sdev); - if (scsi_host_in_recovery(shost) || scsi_host_is_busy(shost) || - scsi_target_is_busy(starget) || scsi_device_is_busy(sdev)) + /* + * Ignore host/starget busy state. + * Since block layer does not have a concept of fairness across + * multiple queues, congestion of host/starget needs to be handled + * in SCSI layer. + */ + if (scsi_host_in_recovery(shost) || scsi_device_is_busy(sdev)) return 1; return 0;