|
@@ -1378,16 +1378,19 @@ static int scsi_lld_busy(struct request_queue *q)
|
|
{
|
|
{
|
|
struct scsi_device *sdev = q->queuedata;
|
|
struct scsi_device *sdev = q->queuedata;
|
|
struct Scsi_Host *shost;
|
|
struct Scsi_Host *shost;
|
|
- struct scsi_target *starget;
|
|
|
|
|
|
|
|
if (!sdev)
|
|
if (!sdev)
|
|
return 0;
|
|
return 0;
|
|
|
|
|
|
shost = sdev->host;
|
|
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 1;
|
|
|
|
|
|
return 0;
|
|
return 0;
|