diff options
author | Edward Goggin <egoggin@vmware.com> | 2009-04-09 10:02:22 -0700 |
---|---|---|
committer | James Bottomley <James.Bottomley@HansenPartnership.com> | 2009-05-14 17:17:46 -0400 |
commit | c53a284f8be23735dc6b53929640a987055f2933 (patch) | |
tree | 06551e692dada9abdb36b1744bcd4640642ac29d | |
parent | 5df6d737dd4b0fe9eccf943abb3677cfea05a6c4 (diff) | |
download | kernel-common-c53a284f8be23735dc6b53929640a987055f2933.tar.gz kernel-common-c53a284f8be23735dc6b53929640a987055f2933.tar.bz2 kernel-common-c53a284f8be23735dc6b53929640a987055f2933.zip |
[SCSI] initialize max_target_blocked in scsi_alloc_target
This patch initializes the max_target_blocked field of a scsi target
structure so that a queuecommand return value of
SCSI_MLQUEUE_TARGET_BUSY will actually result in having the
scsi_queue_insert blocking the device queue before requeuing the
command and running the queue. Otherwise, can and does cause livelock
on single CPU configurations if/when open-iSCSI software initiator's
command PDU window fills.
Signed-off-by: Ed Goggin <egoggin@vmware.com>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
-rw-r--r-- | drivers/scsi/scsi_scan.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c index 6f51ca485f35..e2b50d8f57a8 100644 --- a/drivers/scsi/scsi_scan.c +++ b/drivers/scsi/scsi_scan.c @@ -425,6 +425,7 @@ static struct scsi_target *scsi_alloc_target(struct device *parent, INIT_LIST_HEAD(&starget->devices); starget->state = STARGET_CREATED; starget->scsi_level = SCSI_2; + starget->max_target_blocked = SCSI_DEFAULT_TARGET_BLOCKED; retry: spin_lock_irqsave(shost->host_lock, flags); |